tabindex und accesskey
Steuern Sie die Reihenfolge der Tastaturnavigation und Tastenkürzel.
tabindex und accesskey ist eine kostenlose HTML Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des HTML Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der HTML Academy-Kurs umfasst insgesamt 4 Lektionen.
Tastaturnavigation
Benutzer ohne Maus sind bei der Navigation durch interaktive Elemente auf Tab angewiesen:
- Von Natur aus fokussierbar:
<a href>,<button>,<input>,<select>,<textarea> - Nicht interaktive Elemente (
<div>,<span>) befinden sich nicht in der Tab-Reihenfolge tabindexsteuert, ob und an welcher Stelle ein Element in der Tab-Reihenfolge erscheint
tabindex="0"
tabindex="0" fügt ein nicht interaktives Element in die natürliche Tab-Reihenfolge ein:
<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" macht ein Element per Programm fokussierbar, entfernt es aber aus der Tab-Reihenfolge:
<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>Positive tabindex-Werte — vermeiden
Positive tabindex-Werte (z. B. tabindex="3") legen eine eigene Tab-Reihenfolge fest — vermeiden Sie diese:
<!-- 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 -->Fokusverwaltung in SPAs
Single-Page-Apps müssen den Fokus manuell verwalten:
// 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();Fokusfalle in Modals
Sperren Sie den Fokus innerhalb eines geöffneten Modals, damit Tab darin bleibt:
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();
}
}
});
}Das accesskey-Attribut
Das Attribut accesskey weist einem Element ein Tastenkürzel zu:
<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>Einschränkungen von accesskey
accesskey bringt erhebliche Probleme mit sich:
- Die Aktivierungstasten unterscheiden sich je nach Browser und Betriebssystem
- Es kommt zu Konflikten mit Tastenkürzeln des Browsers (z. B. Alt+F = Dateimenü)
- Screenreader kündigen sie standardmäßig nicht an
- Sie werden in der Praxis selten verwendet — dokumentieren Sie sie, falls Sie sie einsetzen
Sichtbare Fokusindikatoren
Blenden Sie Fokusumrisse niemals aus — sie sind für Tastaturbenutzer unverzichtbar:
/* 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 */Muster für Sprunglinks
Mit einem Sprunglink können Tastaturbenutzer sich wiederholende Navigation überspringen:
<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-Attribut
Das Attribut autofocus verschiebt den Fokus beim Laden der Seite auf ein Element:
<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 -->Schnelltest
Welcher tabindex-Wert macht ein Element über JavaScript fokussierbar, überspringt es aber bei der normalen Tab-Navigation?
Zusammenfassung: tabindex und accesskey
Die wichtigsten Punkte zur Tastaturzugänglichkeit:
tabindex="0"— in die natürliche Tab-Reihenfolge aufnehmentabindex="-1"— per Programm fokussierbar, nicht in der Tab-Reihenfolge- Positive tabindex-Werte vermeiden
- Umrisse von
:focus-visibleniemals entfernen - Sprunglinks für Tastaturbenutzer implementieren
accesskeyist verfügbar, aber aufgrund von Konflikten selten praktikabel
Häufig gestellte Fragen
Ist die Lektion „tabindex und accesskey“ kostenlos?
Ja — der vollständige Text von „tabindex und accesskey“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des HTML Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der HTML Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „tabindex und accesskey“?
Steuern Sie die Reihenfolge der Tastaturnavigation und Tastenkürzel. Du übst HTML Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um HTML Academy zu starten?
Keine Vorkenntnisse erforderlich. HTML Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.
Wie lange dauert die Lektion „tabindex und accesskey“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser HTML Academy-Lektion Code schreiben und ausführen?
Ja. Jede HTML Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- id, class, style und title
- Das hidden-Attribut
- tabindex und accesskey
- Benutzerdefinierte Datenattribute: data-*