tabindex ve accesskey
Klavye gezinme sırasını ve kısayolları denetlemeyi öğrenin.
tabindex ve accesskey, CoddyKit'te ücretsiz bir HTML Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, HTML Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. HTML Academy kursu toplamda 4 dersten oluşur.
Klavye ile Gezinme
Faresi olmayan kullanıcılar etkileşimli öğelerde gezinmek için Tab tuşuna güvenir:
- Doğal olarak odaklanabilenler:
<a href>,<button>,<input>,<select>,<textarea> - Etkileşimli olmayan öğeler (
<div>,<span>) sekme sırasına dahil değildir tabindex, bir öğenin sekme sırasına dahil olup olmayacağını ve nerede görüneceğini denetler
tabindex="0"
tabindex="0", etkileşimli olmayan bir öğeyi doğal sekme sırasına ekler:
<div tabindex="0" role="button" onclick="handleClick()">
Custom Button
</div>
<!-- Now Tab navigates to this div -->
<!-- It receives focus at the natural position in the DOM -->
<!-- Better: use a real button instead! -->
<button onclick="handleClick()">Real Button</button>tabindex="-1"
tabindex="-1", bir öğenin program aracılığıyla odaklanabilmesini sağlar ancak öğeyi sekme sırasından çıkarır:
<div id="modal" tabindex="-1" role="dialog">
<!-- modal content -->
</div>
<script>
// Open modal and send focus to it:
document.getElementById('modal').focus();
// Modal is now focused but not in the normal tab sequence
</script>Pozitif tabindex Değerlerinden Kaçının
Pozitif tabindex değerleri (ör. tabindex="3") özel bir sekme sırası belirler — bunlardan kaçının:
<!-- BAD: positive tabindex creates unpredictable order -->
<input tabindex="3">
<input tabindex="1">
<input tabindex="2">
<!-- The tab order becomes: 1, 2, 3, then all tabindex=0 elements -->
<!-- This almost always confuses users and fails WCAG 2.4.3 -->
<!-- Fix the DOM order instead of using positive tabindex -->Tek Sayfalı Uygulamalarda Odak Yönetimi
Tek sayfalı uygulamalar odağı elle yönetmelidir:
// When navigating to a new route:
document.querySelector('#main-content').focus();
// When opening a modal:
const modal = document.getElementById('modal');
modal.removeAttribute('hidden');
modal.querySelector('[autofocus], button, [tabindex]').focus();
// When closing a modal: return focus to the trigger
document.getElementById('open-btn').focus();Modallarda Odağı Sınırlama
Sekmenin modal içinde kalması için açık bir modalın içindeki odağı sınırlayın:
function trapFocus(element) {
const focusable = element.querySelectorAll(
'a, button, input, textarea, select, [tabindex]:not([tabindex="-1"])'
);
const first = focusable[0];
const last = focusable[focusable.length - 1];
element.addEventListener('keydown', e => {
if (e.key === 'Tab') {
if (e.shiftKey && document.activeElement === first) {
e.preventDefault(); last.focus();
} else if (!e.shiftKey && document.activeElement === last) {
e.preventDefault(); first.focus();
}
}
});
}accesskey Özniteliği
accesskey özniteliği bir öğeye klavye kısayolu atar:
<button accesskey="s">Submit</button>
<!-- On Windows: Alt+S focuses/activates the button -->
<!-- On Mac: Control+Option+S -->
<!-- On Firefox: Shift+Alt+S -->
<a href="/" accesskey="h">Home</a>accesskey Sınırlamaları
accesskey ile ilgili önemli sorunlar vardır:
- Etkinleştirme tuşları tarayıcılara ve işletim sistemlerine göre değişir
- Tarayıcı kısayollarıyla çakışır (ör. Alt+F = Dosya menüsü)
- Varsayılan olarak ekran okuyucular tarafından duyurulmaz
- Uygulamada nadiren kullanılır — kullanırsanız bunları belgelendirin
Görünür Odak Göstergeleri
Odak çerçevelerini asla gizlemeyin — bunlar klavye kullanıcıları için vazgeçilmezdir:
/* BAD: removes focus outline for everyone */
* { outline: none; }
/* Better: style focus outlines, don't remove them */
:focus-visible {
outline: 2px solid #0070f3;
outline-offset: 2px;
border-radius: 3px;
}
/* :focus-visible only shows outline for keyboard navigation -->
/* Mouse clicks do not trigger :focus-visible in modern browsers */Atlama Bağlantısı Deseni
Bir atlama bağlantısı, klavye kullanıcılarının tekrarlanan gezinme bölümlerini geçmesini sağlar:
<a href="#main-content" class="skip-link">Skip to main content</a>
<nav>... long navigation ...</nav>
<main id="main-content" tabindex="-1">... content ...</main>
<!-- CSS: -->
<!--
.skip-link {
position: absolute;
top: -100%;
}
.skip-link:focus {
top: 0;
}
-->autofocus Özniteliği
autofocus özniteliği, sayfa yüklendiğinde odağı bir öğeye taşır:
<input type="search" autofocus placeholder="Search...">
<!-- Useful on search pages or forms with a single primary field -->
<!-- Use sparingly: it can disrupt users who rely on the page top for orientation -->
<!-- Only one element per page should have autofocus -->Hızlı Kontrol
Bir öğeyi JavaScript aracılığıyla odaklanabilir hâle getirirken normal Tab gezinmesinde atlanmasını sağlayan tabindex değeri hangisidir?
Özet: tabindex ve accesskey
Klavye erişilebilirliğinin temel noktaları:
tabindex="0"— doğal sekme sırasına eklertabindex="-1"— program aracılığıyla odaklanabilir, sekme sırasında yer almaz- Pozitif tabindex değerlerinden kaçının
:focus-visibleçerçevelerini asla kaldırmayın- Klavye kullanıcıları için atlama bağlantıları uygulayın
accesskeykullanılabilir ancak çakışmalar nedeniyle uygulamada nadiren işe yarar
Sıkça Sorulan Sorular
“tabindex ve accesskey” dersi ücretsiz mi?
Evet — “tabindex ve accesskey” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve HTML Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. HTML Academy kursu toplamda 4 dersten oluşur.
“tabindex ve accesskey” dersinde ne öğreneceğim?
Klavye gezinme sırasını ve kısayolları denetlemeyi öğrenin. HTML Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
HTML Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te HTML Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.
“tabindex ve accesskey” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu HTML Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her HTML Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- id, class, style ve title
- hidden Özniteliği
- tabindex ve accesskey
- Özel Veri Öznitelikleri: data-*