0Pricing
HTML Academy · Lektion

aria-selected und Tab-Muster

Implementieren Sie per Tastatur zugängliche Tab-Oberflächen

aria-selected und Tab-Muster ist eine kostenlose HTML Academy-Lektion auf CoddyKit. Dies ist Lektion 2 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.

Überblick über das Tab-Muster

Eine Tab-Oberfläche besteht aus drei ARIA-Komponenten:

  • role="tablist" – Container für alle Tabs
  • role="tab" – einzelne Tab-Schaltfläche
  • role="tabpanel" – Inhaltsbereich für jeden Tab

ARIA-Tab-Struktur

Vollständiges barrierefreies Tab-Markup:

<div role="tablist" aria-label="Account Settings">
  <button role="tab" id="tab-1" aria-selected="true"
          aria-controls="panel-1">Profile</button>
  <button role="tab" id="tab-2" aria-selected="false"
          aria-controls="panel-2" tabindex="-1">Security</button>
  <button role="tab" id="tab-3" aria-selected="false"
          aria-controls="panel-3" tabindex="-1">Notifications</button>
</div>

<div id="panel-1" role="tabpanel" aria-labelledby="tab-1">
  Profile content...
</div>
<div id="panel-2" role="tabpanel" aria-labelledby="tab-2" hidden>
  Security content...
</div>

aria-selected

aria-selected gibt das aktuell aktive Element in einem Auswahlkontext an:

<!-- In a tablist: -->
<button role="tab" aria-selected="true">Active Tab</button>
<button role="tab" aria-selected="false">Other Tab</button>

<!-- In a listbox: -->
<ul role="listbox">
  <li role="option" aria-selected="false">Option 1</li>
  <li role="option" aria-selected="true">Option 2</li>
</ul>

Tastaturmuster für Tabs

ARIA-Muster definieren ein bestimmtes Tastaturverhalten für Tabs:

  • Tab – setzt den Fokus im Tablist-Container auf den ausgewählten Tab
  • Pfeiltasten – wechseln zwischen den Tabs
  • Erneut Tab – verschiebt den Fokus aus dem Tablist-Container in das aktive Panel
  • Pos1 – erster Tab
  • Ende – letzter Tab

Implementierung der Tab-Tastaturnavigation

Tastaturnavigation für Tabs mit Pfeiltasten:

const tabs = document.querySelectorAll('[role="tab"]');

tabs.forEach((tab, i) => {
  tab.addEventListener('keydown', (e) => {
    let target;
    if (e.key === 'ArrowRight') target = tabs[(i + 1) % tabs.length];
    if (e.key === 'ArrowLeft') target = tabs[(i - 1 + tabs.length) % tabs.length];
    if (e.key === 'Home') target = tabs[0];
    if (e.key === 'End') target = tabs[tabs.length - 1];

    if (target) {
      activateTab(target);
      target.focus();
    }
  });
});

activateTab-Funktion

Funktion zum Wechseln von Tabs und Aktualisieren der ARIA-Attribute:

function activateTab(selectedTab) {
  // Deactivate all tabs:
  document.querySelectorAll('[role="tab"]').forEach(tab => {
    tab.setAttribute('aria-selected', 'false');
    tab.setAttribute('tabindex', '-1');
    document.getElementById(tab.getAttribute('aria-controls')).hidden = true;
  });

  // Activate selected tab:
  selectedTab.setAttribute('aria-selected', 'true');
  selectedTab.setAttribute('tabindex', '0');
  document.getElementById(selectedTab.getAttribute('aria-controls')).hidden = false;
}

Roving-tabindex-Muster

Tab-Gruppen verwenden roving tabindex, damit sich immer genau ein Tab in der Tab-Reihenfolge befindet:

<!-- Only the selected tab has tabindex=0 -->
<button role="tab" aria-selected="true" tabindex="0">Active</button>
<button role="tab" aria-selected="false" tabindex="-1">Other</button>
<button role="tab" aria-selected="false" tabindex="-1">Another</button>

<!-- When user arrows to a new tab:
     1. Set new tab tabindex=0
     2. Set old tab tabindex=-1
     3. Focus new tab -->

aria-selected vs. aria-checked

aria-selected und aria-checked – unterschiedliche Kontexte:

  • aria-selected – wird in Auswahl-Widgets verwendet: Tabs, Optionen in einer Listbox, Elemente in einem Baum
  • aria-checked – wird bei auswählbaren Elementen verwendet: Kontrollkästchen, Menüelemente mit Häkchen

Fokus im Tabpanel

Wenn ein Tab aktiviert wird, wird das Panel sichtbar, der Fokus bleibt jedoch auf dem Tab:

// Users can then Tab to move into the panel content
// The panel should not automatically receive focus

// Exception: if the panel is very long, consider moving focus
// to the panel heading for long-form content tabs

// Panel should have tabindex=-1 for programmatic focus:
<div id="panel-1" role="tabpanel" aria-labelledby="tab-1" tabindex="-1">

Automatische vs. manuelle Aktivierung

Zwei Modelle für die Tab-Aktivierung:

  • Automatisch – Tabs werden aktiviert, während Sie mit den Pfeiltasten durch sie navigieren (einfachere Bedienung)
  • Manuell – nach der Navigation mit den Pfeiltasten müssen Sie Enter/Leertaste drücken, um einen Tab zu aktivieren (besser, wenn das Laden des Tab-Inhalts Zeit benötigt)

Barrierefreies Tab-Styling

CSS für den ausgewählten Zustand barrierefreier Tabs:

[role="tab"] {
  border-bottom: 3px solid transparent;
  padding: 0.75rem 1rem;
  cursor: pointer;
}

[role="tab"][aria-selected="true"] {
  border-bottom-color: #0070f3;
  font-weight: bold;
}

/* :focus-visible for keyboard users: */
[role="tab"]:focus-visible {
  outline: 2px solid #0070f3;
  outline-offset: -2px;
}

Kurztest

Wie sollte die Tastaturnavigation innerhalb einer Tab-Liste funktionieren?

Zusammenfassung: aria-selected und Tabs

Die wichtigsten Punkte zum Tab-Muster:

  • tablist → tab (aria-selected) → tabpanel (aria-labelledby)
  • Mit den Pfeiltasten zwischen Tabs navigieren; mit Tab das Panel betreten
  • Roving tabindex: Nur der aktive Tab hat tabindex=0
  • aria-selected="true" für den aktiven Tab
  • Inaktive Panels verwenden das hidden-Attribut

Häufig gestellte Fragen

Ist die Lektion „aria-selected und Tab-Muster“ kostenlos?

Ja — der vollständige Text von „aria-selected und Tab-Muster“ 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 „aria-selected und Tab-Muster“?

Implementieren Sie per Tastatur zugängliche Tab-Oberflächen 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 2 von 4.

Wie lange dauert die Lektion „aria-selected und Tab-Muster“?

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

  1. aria-expanded und aria-controls für Umschalter
  2. aria-selected und Tab-Muster
  3. Live-Regionen: aria-live aria-atomic aria-relevant
  4. Testen mit Screenreadern
← Zurück zu HTML Academy