Klavye erişilebilirliği nasıl sağlanır? tabindex değerleri ne anlama gelir?
Cevap
Tüm etkileşimli öğelere sadece klavye ile ulaşılabilmeli ve kullanılabilmeli: Tab ile gezinme, Enter/Space ile tetikleme, Escape ile kapatma ve her zaman görünür bir odak göstergesi.
Temel kurallar
- Native elemanları kullanın:
<button>,<a href>,<input>,<select>klavye desteğini bedava getirir. Tıklanabilir<div onClick>klavyeyle çalışmaz. - Odak sırası DOM sırasını takip eder; CSS ile görsel sırayı değiştirmek (ör.
order,flex-direction: row-reverse) kafa karıştırır. outline: noneile odak halkasını kaldırmayın; özelleştirmek için:focus-visiblekullanın.
button:focus-visible { outline: 3px solid #2563eb; outline-offset: 2px; }tabindex
| Değer | Anlamı |
|---|---|
tabindex="0" | Normal olarak odaklanamayan elemanı doğal Tab sırasına ekler |
tabindex="-1" | Tab ile ulaşılamaz ama element.focus() ile programatik odaklanabilir |
tabindex="1" ve üzeri | Tab sırasını zorla değiştirir; kullanmayın, sırayı bozar |
Odak yönetimi
- Modal açılınca odağı içine taşıyın, kapanınca açan butona geri verin.
- SPA'da route değişince odağı yeni sayfanın başlığına (
tabindex="-1"ile) taşıyın. - "İçeriğe atla" (skip link) bağlantısı ekleyin.
- Arka plandaki içeriği etkileşime kapatmak için
inertattribute'u kullanılabilir.
Composite widget'lar
Tab listesi, menü, grid gibi bileşenlerde roving tabindex kullanılır: grubun sadece bir öğesi tabindex="0", diğerleri -1; grup içinde ok tuşlarıyla gezilir.
İlgili Erişilebilirlik soruları
- Bir modal (dialog) bileşenini erişilebilir yapmak için neler gerekir?
- ARIA nedir? Ne zaman kullanılmalı, ne zaman kullanılmamalı?
- Web erişilebilirliği (a11y) nedir, neden önemlidir?
- Bir web uygulamasının erişilebilirliğini nasıl test edersiniz?
- Erişilebilir bir form nasıl yapılır? Hata mesajlarını ekran okuyuculara nasıl iletirsiniz?
Bu konuda başka bir soru biliyor musun?
Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.