Sekme dizinini kullanma

Dave Gash
Dave Gash
Meggin Kearney
Meggin Kearney
Alexandra Klepper
Alexandra Klepper

Anlamsal HTML öğelerinin DOM konumu tarafından sağlanan varsayılan sekme sırası uygundur, ancak sekme sırasını değiştirmeniz gerekebilir. Hareket halinde öğelerinin HTML'de bulunması ideal olsa da mümkün olmayabilir. Böyle durumlarda bir öğenin sekmesini açıkça ayarlamak için tabindex HTML özelliğini kullanabilir dokunun.

Tarayıcı Desteği

  • 1
  • 12
  • 1,5
  • ≤4

Kaynak

tabindex, her zaman olmasa da herhangi bir öğeye uygulanabilir faydalıdır 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 odaklanabilirsiniz.

tabindex="5": 0 değerinden büyük tüm sekme dizini bu öğeyi öne getirir doğal sekme sırasına göre değişir. 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.

Bu durum özellikle başlık, resim veya makale gibi giriş olmayan öğeler için geçerlidir. başlıklar. Mümkün olduğunda kaynak kodunuzu, DOM sırasının mantıksal sekme sırası. tabindex kullanıyorsanız bunu özel etkileşimle sınırlayın düğme, sekme, açılır liste ve metin alanı gibi kontroller; yani bilgi sağlayabilir.

Yalnızca etkileşimli içeriğe tabindex ekleyin. İçerik önemli olsa bile (ör. ana resim) ekran okuyucu kullanıcıları bunu dikkat ekliyorum.

Odağı sayfa düzeyinde yönetme

tabindex, bazen sorunsuz bir kullanıcı deneyimi için gereklidir. Örneğin, farklı içerik bölümlerine sahip sağlam tek bir sayfa oluşturursanız tüm içerik aynı anda görünür olmalıdır. Bu, gezinme bağlantıları anlamına gelebilir görünür içeriği, sayfa yenileme olmadan değiştirin.

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 bileşenler.

Örneğin, select öğesi temel odak noktasını alabiliyor. Ancak bir kez seçilebilir ek seçenekleri göstermek için ok tuşlarını kullanabilirsiniz. Özel bir select öğesi oluşturursanız bunu tekrarlamak önemlidir klavye kullanıcılarının kontrolünüzle etkileşimde bulunmaya devam edebilmesi için.

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.

Belki de ayrıntıya inen Özel Öğeler bir dizi radyo düğmesine benziyor, ancak görünüşe ve gösterir.

<radio-group>
    <radio-button>Water</radio-button>
    <radio-button>Coffee</radio-button>
    <radio-button>Tea</radio-button>
    <radio-button>Cola</radio-button>
    <radio-button>Ginger Ale</radio-button>
</radio-group>

Hangi klavye desteğine ihtiyaç duyduklarını belirlemek için ARIA Yazma Uygulamaları rehberini inceleyin. 2. Bölüm, aşağıdakileri içeren bir tasarım kalıplarının listesini içerir: telsiz için özellikler tablosu gruplar yeni öğenizle en iyi eşleşen mevcut bileşeni

Yaygın klavye çalışmalarından biri, yukarı/aşağı/sol/sağ ok tuşları desteklenir. Bu davranışı yeni bileşeni için, kayan sekme dizini adlı bir teknik kullanırız.

Ayarlanabilir sekme dizini,tabindex etkin olan bir hesap seçebilirsiniz.

<radio-group>
  <radio-button tabindex="0">Water</radio-button>
  <radio-button tabindex="-1">Coffee</radio-button>
  <radio-button tabindex="-1">Tea</radio-button>
  <radio-button tabindex="-1">Cola</radio-button>
  <radio-button tabindex="-1">Ginger Ale</radio-button>
</radio-group>

Bileşen, bir klavyenin hangi tuşun kullanıcı bastığında; daha önce odaklanılan çocuğun tabindex, -1'e, belirli bir hedefe odaklanan çocuğun tabindex değerini 0'a ayarlar ve odaklamanıza yardım eder.

<radio-group>
    <!-- Assuming the user pressed the down arrow, we'll focus the next available child -->
    <radio-button tabindex="-1">Water</radio-button>
    <radio-button tabindex="0">Coffee</radio-button> // call .focus() on this element
    <radio-button tabindex="-1">Tea</radio-button>
    <radio-button tabindex="-1">Cola</radio-button>
    <radio-button tabindex="-1">Ginger Ale</radio-button>
</radio-group>

Kullanıcı sonuncuya (veya varış noktasına bağlı olarak ilk sıraya ulaştığında) bir noktaya dönmeye başlayınca, odak tekrar birinciye (veya sonuncuya) döner. alt öğe olarak ayarlanır.

Aşağıdaki örneği deneyin. Öğeyi Geliştirici Araçları'nı kullanarak sekme dizininin bir radyodan diğerine taşındığını görebilirsiniz.

Kalıcı iletişim kutuları ve klavye tuzakları

Karmaşık durumlara yol açabileceğinden odağı manuel olarak yönetmekten kaçınmak en iyisidir. Örneğin, odağı yönetmeye çalışan ve fotoğraf çeken bir otomatik tamamlama widget'ı sekme davranışına uyar, ancak tamamlanana kadar kullanıcının sayfadan ayrılmasını engeller. Buna klavye tuzağı denir ve kullanıcı için çok can sıkıcı olabilir.

WCAG Bölüm 2.1.2'de, klavye odağının hiçbir zaman kilitlenmemesi veya tek bir sayfa öğesinde sıkışmış olabilir. Kullanıcı yalnızca klavye kısayollarını da kullanabilirsiniz.

Bu kuralın istisnası kalıcıdır. Ancak yine de Kalıcı bir iletişim kutusu oluştururken tabindex. inert ile şunları yapabilirsiniz: Kullanıcıların bir öğeyle yanlışlıkla etkileşimde bulunmalarını önlemek için (kasıtlı klavye tuzağı). <dialog>'ı kullanma öğesi oluşturun. Bu öğe, engellerken kullanıcılar için bir kalıcı tıklama ve sekmelerin boyutunu değiştirebilirsiniz. Bu, kullanıcının bir seçim yapmanız gerekir.