tabindex im HTML

Der Fokus landet, wo er hingehört

Verborgener Bereich, verschachtelter Button, Scrollfenster: drei Stellen der Tabreihenfolge.

Website prüfen
Beispiel im Prüfbericht Markierter Befund
Markierter Befund · Kritisch · WCAG 4.1.2Erreichbarer Link im verborgenen Bereich

Fokusplan statt Zahlenliste

Der Tabweg folgt der Seite

Native Elemente bilden die Strecke. Null fügt einen Halt ein, minus eins ein Sprungziel.

Beispielseite · QuelltextreihenfolgeEin nachvollziehbarer Fokusweg
Abzweig zum programmatischen Fokusziel Die Tabulatortaste folgt vier Stopps. Nach dem Absenden setzt ein Skript den Fokus seitlich auf die Ergebnisüberschrift mit tabindex minus eins.
  1. Startseite<a href="/">nativ
  2. Suche<input type="search">nativ
  3. Statusprotokoll<div tabindex="0">explizit
  4. Prüfung absenden<button type="submit">nativ

Der Grundsatz: Beginnen Sie ohne tabindex.

Link, Button und Formularfeld sind bereits im Tabweg. Ergänzen Sie ein Attribut erst, wenn ein konkreter Fokuspfad es verlangt und Sie diesen Pfad mit der Tastatur geprüft haben.

leer

Native Elemente

Kein Attribut. Die Reihenfolge ergibt sich aus dem logisch aufgebauten Quelltext.

<button>Speichern</button>
0

Zusätzlicher Tabstopp

Nur wenn ein nicht natives Element im normalen Tastaturweg tatsächlich bedienbar sein muss.

<div tabindex="0">
−1

Fokusziel für Skripte

Per focus() erreichbar, von der Tabulatortaste bewusst ausgelassen.

<section tabindex="-1">

Positivwerte verändern die Strecke

Aus vier Feldern wird ein Zickzackweg

Positive Werte laufen zuerst in aufsteigender Reihenfolge. Erst danach folgen native Elemente und tabindex="0" in Quelltextreihenfolge.

Auf dem Bildschirm
  1. Name nativ
  2. E-Mail tabindex 3
  3. Telefon tabindex 1
  4. Absenden tabindex 2
Tatsächlicher Tabweg
  1. 1 Telefon
  2. 2 Absenden
  3. 3 E-Mail
  4. 4 Name

Reparatur: positive Attribute entfernen und die Elemente im DOM in eine logische Reihenfolge bringen. CSS darf die sichtbare Anordnung nicht davon entkoppeln.

0

Ein Scrollbereich als expliziter Halt

Verwenden Sie dies, wenn Ihr Browsertest den Bereich selbst nicht zuverlässig erreicht.

<div
  class="protokoll"
  tabindex="0"
  role="region"
  aria-label="Statusprotokoll"
>
  <p>Anfrage eingegangen</p>
  <p>Prüfung abgeschlossen</p>
  <p>Bericht bereitgestellt</p>
</div>
.protokoll {
  max-block-size: 8rem;
  overflow: auto;
}

.protokoll:focus-visible {
  outline: 3px solid currentColor;
  outline-offset: 3px;
}

Chrome 132 fokussiert viele Scrollbereiche ohne Attribut. Testen Sie Ihre Zielbrowser und fügen Sie 0 nicht pauschal zu jedem overflow hinzu.

−1

Ein Ergebnis als gezieltes Fokusziel

Setzen Sie den Fokus, wenn sich nach einer Aktion ein neuer Kontext öffnet.

<section
  id="ergebnisse"
  tabindex="-1"
  aria-labelledby="ergebnisse-titel"
>
  <h2 id="ergebnisse-titel">Prüfergebnisse</h2>
  <p>Drei Fundstellen benötigen eine Prüfung.</p>
</section>
const ziel = document.querySelector('#ergebnisse');

if (ziel instanceof HTMLElement) {
  ziel.focus();
}

Der sichtbare Fokusrahmen gehört zum Ziel. Entfernen Sie ihn nicht; er bestätigt den Kontextwechsel für Menschen, die der Seite per Tastatur folgen.

Tastaturprüfung

Zeichnen Sie den echten Weg nach

  1. Vorwärts: Laden Sie neu und drücken Sie nur Tab. Notieren Sie jeden Halt.
  2. Rückwärts: Wiederholen Sie den Weg mit Umschalt + Tab.
  3. Kontext: Lösen Sie Dialoge, Fehler und neue Ergebnisse aus. Der Fokus muss folgen.
  4. Sichtbarkeit: Jeder Halt hat einen erkennbaren Fokusrahmen und liegt im Bild.

Die Reihenfolge muss Bedeutung und Bedienbarkeit erhalten. Sie muss nicht schematisch von oben nach unten laufen, darf aber weder überraschend springen noch Bedienelemente auslassen.

Aus dem Prüfbericht

Drei Stellen im Tabweg

Kritisch Das Scrollfenster nimmt keinen Fokus Regel scrollable-region-focusable

Der verdeckte Inhalt lässt sich im Zielbrowser nicht mit der Tastatur scrollen. Machen Sie den Bereich selbst oder ein Element darin erreichbar.

Anleitung: Scrollbereiche per Tastatur bedienen

Zum Mitnehmen

Die Tabreihenfolge, korrigiert

Ein Attribut entfernt, ein Element getrennt, ein tabindex gesetzt.

Korrektur in 3 Schritten ansehen
  1. aria-hidden aus dem Fokusweg nehmen

    Sichtbar und per Tab erreichbar, aber vor Vorleseprogrammen verborgen: das passt nicht zusammen. Der Link soll bedienbar bleiben, also entfällt aria-hidden.

    KorrekturvergleichSchritt 1 · HTML

    Vorher

    <div aria-hidden="true">
      <a href="/archiv">Archiv öffnen</a>
    </div>

    Nachher

    <div>
      <a href="/archiv">Archiv öffnen</a>
    </div>

    Markierte Zeilen wurden geändert

    So prüfen Sie es Tabben Sie auf den Link. Ein Vorleseprogramm nennt jetzt seinen Text.

  2. Link und Schaltfläche nebeneinander stellen

    Ein Link im Button ergibt einen Tabstopp mit zwei Bedeutungen. Nebeneinander behalten beide ihre eigene Rolle und ihr eigenes Ziel.

    KorrekturvergleichSchritt 2 · HTML

    Vorher

    <button>Filter wählen
      <a href="#ergebnisse">Zu den Ergebnissen</a>
    </button>

    Nachher

    <button type="button">Filter wählen</button>
    <a href="#ergebnisse">Zu den Ergebnissen</a>

    Markierte Zeilen wurden geändert

    So prüfen Sie es Tabben Sie durch. Sie halten zweimal, einmal auf der Schaltfläche, einmal auf dem Link.

  3. Das Scrollfenster erreichbar machen

    Wenn der Browsertest keinen Tastaturzugang zeigt, nimmt tabindex null den Bereich explizit in die Reihenfolge auf. Rolle und Name geben ihm Kontext.

    KorrekturvergleichSchritt 3 · HTML

    Vorher

    <div class="protokoll" style="max-height:3rem;overflow:auto">
      <p>Schritt 01 · Schritt 02 · Schritt 03 · Schritt 04</p>
    </div>

    Nachher

    <div class="protokoll" style="max-height:3rem;overflow:auto"
      tabindex="0" role="region" aria-label="Schrittprotokoll">
      <p>Schritt 01 · Schritt 02 · Schritt 03 · Schritt 04</p>
    </div>

    Markierte Zeilen wurden geändert

    So prüfen Sie es Tabben Sie in das Fenster und drücken Sie Pfeil-ab. Der verdeckte Text kommt hervor.

Werbung

Kostenloser Website-Barrierefreiheits-Check

Website auf Barrierefreiheit prüfen.

Technische WCAG-Warnsignale erkennen. Kritische Stellen zuerst prüfen.

Der Website-Check ist bereit.

Werbung

Ein letzter Schritt

Prüfen, bevor Sie gehen.

Finden Sie automatisch erkennbare Barrieren auf Ihrer eigenen Website.

Website prüfen

Kostenlos starten · keine Installation

Automatisches Screening. Tastaturbedienung und Screenreader bleiben manuelle Prüfung.