Accessible Tabs

Vier Tab-Stopps für drei Reiter

Ein Wrapper zu viel, ein Reiter ohne Namen: drei Befunde im Register.

Website prüfen
Beispiel im Prüfbericht Markierter Befund
Markierter Befund · Kritisch · WCAG 4.1.2Registerkarte ohne Namen

Zustände statt Reiter

So bleibt Fokus mit dem richtigen Panel verbunden

Eine visuelle Karte für Tab-Taste, Pfeiltasten und die zwei Aktivierungsarten.

Beziehungsplan eines RegistersKonzeptionelle Darstellung, keine bedienbare Registerkarte
FokusausgewähltPanel sichtbar

role="tablist" · Produktinfos

Überblick id="tab-ueberblick" Daten id="tab-daten" Downloads id="tab-downloads"
Verbindungen zwischen Reiter und Panel aria-controls führt vom Reiter Überblick zum Panel. aria-labelledby führt vom Panel zurück zum Reiter und gibt dem Panel dadurch seinen Namen. aria-controls="panel-ueberblick" aria-labelledby="tab-ueberblick"

role="tabpanel" · id="panel-ueberblick"

Das Gerät wiegt 320 Gramm und lädt über USB-C.

sichtbar · durch „Überblick“ benannt

Tab-Taste außen, Pfeiltasten innen

Link davorTabein aktiver Reiter wechseln innerhalb der ListeTabPanel oder nächstes Ziel

Drei Reiter erzeugen einen Stopp in der normalen Tab-Reihenfolge. Nur der aktive Reiter bleibt mit tabindex="0" erreichbar, die anderen tragen tabindex="-1".

Automatische Aktivierung

Für vorab geladene Panels, die ohne merkbare Verzögerung erscheinen.

Start

Überblick Daten

Panel: Überblick

Fokus bewegt sich

sofort

Überblick Daten

Panel: Daten

Der Pfeil ändert Fokus, Auswahl und Panel in einem Zug.

Manuelle Aktivierung

Für Inhalte, deren Anzeige Zeit braucht oder erst geladen werden muss.

Start

Überblick Daten

Panel: Überblick

nur Fokus

noch nicht gewählt

ÜberblickDaten

Panel: Überblick

Enter oder Leertasteaktiviert

gewählt

Überblick Daten

Panel: Daten

Der Pfeil ändert nur den Fokus. Erst Enter oder Leertaste ändern Auswahl und Panel.

So prüfen Sie es

TabFokus landet auf dem ausgewählten Reiter.

Fokus läuft durch die Reiter und springt am Ende um.

HomeEndeFokus erreicht ersten und letzten Reiter.

TabFokus verlässt die Reiterliste zum Panel oder nächsten Ziel.

Prüfen Sie Fokus und Auswahl getrennt. Genau ein Reiter ist ausgewählt, genau ein Panel sichtbar und jede Zuordnung verweist auf eine vorhandene ID.

Aus dem Prüfbericht

Drei Stellen, drei Befunde

Zum Mitnehmen

Das Register, korrigiert

Reiter direkt in der tablist, ein Tab-Stopp, Pfeiltasten dazwischen.

Korrektur in 2 Schritten ansehen
  1. Die Reiter direkt in die tablist setzen

    Ohne Wrapper stimmt die Struktur. Nur der aktive Reiter hat tabindex 0, die anderen −1.

    KorrekturvergleichSchritt 1 · HTML

    Vorher

    <div role="tablist">
      <div class="row">
        <button role="tab">Überblick</button>
        <button role="tab">Daten</button>
        <button role="tab"><svg aria-hidden="true"><use href="#dl"></use></svg></button>
      </div>
    </div>

    Nachher

    <div role="tablist" aria-label="Produktinfos">
      <button role="tab" aria-selected="true" aria-controls="p1" id="t1">Überblick</button>
      <button role="tab" aria-selected="false" aria-controls="p2" id="t2" tabindex="-1">
        Daten
      </button>
      <button role="tab" aria-selected="false" aria-controls="p3" id="t3" tabindex="-1"
        aria-label="Downloads"><svg aria-hidden="true"><use href="#dl"></use></svg></button>
    </div>

    Markierte Zeilen wurden geändert

    So prüfen Sie es Ein Vorleseprogramm sagt „Produktinfos, Registerkarten. Überblick, Registerkarte, ausgewählt, 1 von 3“.

  2. Die Pfeiltasten bewegen den Reiter

    Tab betritt das Register einmal. Pfeil links und rechts wechseln den Reiter und den Fokus.

    KorrekturvergleichSchritt 2 · JavaScript

    Vorher

    tabs.forEach((tab) => {
      tab.addEventListener('click', () => select(tab));
    });

    Nachher

    tabs.forEach((tab, index) => {
      tab.addEventListener('click', () => select(tab));
      tab.addEventListener('keydown', (event) => {
        const step = { ArrowRight: 1, ArrowLeft: -1 }[event.key];
        if (!step) return;
        const next = tabs[(index + step + tabs.length) % tabs.length];
        select(next);
        next.focus();
      });
    });

    Markierte Zeilen wurden geändert

    So prüfen Sie es Tab auf den ersten Reiter, dann Pfeil rechts. Der zweite Reiter ist ausgewählt und fokussiert.

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.