Sekme diziniyle odağı kontrol etme

<button> veya <input> gibi standart HTML öğelerinin klavyeden erişilebilirliği vardır yerleşik olarak bulunur ve mümkün olduğunda kullanılmalıdır. Ancak her bir görev için özel etkileşimli öğeleri kullanarak, beklenen kullanıcı davranışını tabindex ekleniyor.

Tarayıcı Desteği

  • Chrome: 1..
  • Kenar: 12..
  • Firefox: 1.5..
  • Safari: ≤4..

Kaynak

Yalnızca etkileşimli içeriğe tabindex ekleyin. İçerik, ekran okuyucu kullanıcılarının bunu anlayabileceğinden dikkat ekliyorum.

Tabindex nedir?

Bazen, yerleşik olarak sağlanan varsayılan sekme sırasını değiştirmeniz gerekir öğelerinde tabindex HTML özelliğini kullanarak açıkça bir öğenin sekme konumuna gidin.

tabindex tüm öğelere uygulanabilir olsa da yalnızca öğedir ve bir dizi tam sayı değeri alır. Entegre tabindex, odaklanılabilir sayfa öğeleri için açık bir sıra belirtebilirsiniz. sekme sırasına başka bir şekilde odaklanılamayan bir öğe ekleme ve öğeleri kaldırma . Örneğin:

tabindex="0": Normal sekme sırasına bir öğe ekler. Öğe, Sekme tuşuna basarak odaklanılabilir. Öğeye odaklanabilmek için onun focus() yöntemi.

tabindex="-1": Bir öğeyi doğal sekme sırasından kaldırır ancak ilgili öğe yine de focus() yöntemini çağırarak odaklanabilir

tabindex="5": 0 değerinden büyük tüm sekme dizini bu öğeyi öne getirir doğal sekme sırasındaki değişikliği ifade eder. Tabindex daha büyük olan birden fazla öğe varsa 0 değerine göre, sekme sırası sıfırdan büyük en düşük değerden başlar hız kazanıyor. 0 değerinden büyük bir sekme dizini kullanılması, anti-pattern.

Kontrollerin klavyeden erişilebilir olmasını sağlama

Lighthouse gibi bir araç, belirli erişilebilirlik özelliklerinin otomatik olarak Ancak bazı testlerin yine de bir insan tarafından manuel olarak yapılması gerekir.

Sitenizde gezinmek için Tab tuşuna basmayı deneyin. Çalıştığınız her projede nasıl kontrol ediyor? Değilse tabindex odaklanılmasını sağlayabilirsiniz.

Odağı sayfa düzeyinde yönetme

tabindex, bazen sorunsuz bir kullanıcı deneyimi oluşturmaya yardımcı olur. Örneğin, Farklı içerik bölümlerine sahip sağlam tek bir sayfa oluşturursanız İçerik, sayfa yüklenirken farklı noktalarda gizlenmiştir. Bunun anlamı şu olabilir: gezinme bağlantıları, sayfa yenileme olmadan görünür içeriği değiştirir.

Bu durumda, seçilen içerik alanını tanımlayın ve tabindex -1 ve focus yöntemini çağırın. Bu, içeriğin doğal sekme sıralaması. Odaklanmayı yönetme adı verilen bu teknik, Sitenin görsel içeriğiyle uyumlu olarak, kullanıcının algılanan bağlamı.

Bileşenlerde odağı yönetme

Bazı durumlarda odağı kontrol düzeyinde de yönetmeniz gerekir (örneğin, Özel Öğeler.

Hangi klavye davranışlarını uygulayacağınızı bilmek zor olabilir. İlgili içeriği oluşturmak için kullanılan Erişilebilir Zengin İnternet Uygulamaları (ARIA) Yazma Uygulamalar kılavuzunda bileşen türlerinin ve destekledikleri klavye işlemlerinin türleri listelenir.

Sekme sırasına öğe ekleme

Doğal sekme sırasına tabindex="0" kullanarak öğe ekleyin. Örneğin:

<div tabindex="0">Focus me with the TAB key</div>

Bir öğeye odaklanmak için Tab tuşuna basın veya öğenin focus() yöntemini çağırın.

Sekme sırasından bir öğeyi kaldırma

tabindex="-1" kullanarak bir öğeyi kaldırın. Örneğin:

<button tabindex="-1">Can't reach me with the TAB key!</button>

Bu işlem, bir öğeyi doğal sekme sırasından kaldırır ancak öğe yine de focus() yöntemini çağırarak odaklanılır.

Bir öğeye tabindex="-1" uygulanması alt öğeleri etkilemez; sekme sırasında doğal olarak veya bir tabindex değeri nedeniyle sekme sırasında kalırlar. Bir öğeyi ve tüm alt öğelerini sekme sırasından kaldırmak için WICG'nin inert çoklu dolgusu. Çoklu dolgu, önerilen bir inert özelliğinin davranışını emüle eder. Böylece öğelerin yardımcı teknolojiler tarafından seçilmesini veya okunmasını engelleyebilirsiniz.

tabindex > 0 kullanmaktan kaçının

0'dan büyük bir tabindex, öğeyi doğal sekmenin önüne atlar sipariş. tabindex değeri 0'dan büyük olan birden fazla öğe varsa sekme sıra, sıfırdan büyük en düşük değerden başlar ve yukarıya doğru ilerler.

0'dan büyük bir tabindex kullanılması anti-model olarak kabul edilir, çünkü Ekran okuyucular sayfada sekme sırasına göre değil, DOM sırasına göre gezinir. Bir öğe, sekme sırasında daha erken bir tarihte yer alacaksa daha önceki bir noktaya taşınmalıdır. kullanabilirsiniz.

Lighthouse ile, öğeleri tabindex > 0 Erişilebilirlik Denetimi'ne (Lighthouse > Seçenekler > Erişilebilirlik) gidin ve "Hiçbir öğe 0'dan büyük bir [tabindex] değerine sahip değil" sonuçları denetli.

"Füzyon tabindex" etiketini kullan

Karmaşık bir bileşen oluşturuyorsanız ekstra klavye eklemeniz gerekebilir desteği sunmak çok önemli. Mümkün olduğunda yerleşik select öğesini kullanın. İnsanların odaklanılabilir ve ok tuşlarının seçilebilir ek öğeler göstermesine olanak tanır seçenekleri vardır.

Benzer işlevleri kendi bileşenlerinizde uygulamak için bilinen bir teknik kullanabilirsiniz. "araba tabindex" olarak tanındı. Hareketsiz sekme dizini, tabindex alanının -1 değerine ayarlanmasıyla çalışır şu anda etkin olan hariç tüm alt yayıncılar. Bileşen, daha sonra kullanıcının hangi tuşa bastığını belirlemek için etkinlik işleyiciyi kullanın.

Bu durumda bileşen, önceden odaklanılan alt öğenin tabindex -1 olarak, belirli bir hedefe odaklanan çocuğun tabindex değerini 0 olarak ayarlar ve focus() çağrısını yapar. yöntemini de ekleyebilirsiniz.

Önce

<div role="toolbar">
  <button tabindex="-1">Undo</button>
  <button tabindex="0">Redo</button>
  <button tabindex="-1">Cut</button>
</div>

Sonra

<div role="toolbar">
  <button tabindex="-1">Undo</button>
  <button tabindex="-1">Redo</button>
  <button tabindex="0">Cut</button>
</div>

Klavye erişimi tarifleri

Özel bileşenlerinizin hangi düzeyde klavyeyi destekleyebileceğinden emin değilseniz söz konusu olduğunda ARIA Yazma Uygulamaları 1.1. Bu kılavuzda, yaygın kullanıcı arayüzü kalıpları ve hangi olması gerekenden bahsedelim.