Table-Komponente: Barrierefreiheit
Diese Dokumentation beschreibt die Barrierefreiheitsfunktionen der Table-Komponente und gibt Hinweise zur korrekten Verwendung für eine optimale Zugänglichkeit.
ARIA-Attribute und Rollen
Die Table-Komponente verwendet folgende ARIA-Attribute und Rollen, um die Barrierefreiheit zu verbessern:
Tabelle
role="grid"
: Identifiziert die Tabelle als interaktives Rasteraria-label="Datentabelle"
: Beschreibt den Zweck der Tabelle (anpassbar)summary="..."
: Bietet eine Zusammenfassung der Tabelle (optional)
Spaltenüberschriften
role="columnheader"
: Identifiziert die Spaltenüberschriftenscope="col"
: Gibt an, dass die Überschrift für eine Spalte giltaria-sort="ascending|descending"
: Zeigt die aktuelle Sortierrichtung anaria-label="Spaltenname, klicken zum Sortieren"
: Beschreibt die Funktion der SpaltenüberschrifttabIndex="0"
: Macht sortierbare Spaltenüberschriften fokussierbar
Zeilen
role="row"
: Identifiziert die Zeilenaria-selected="true|false"
: Zeigt an, ob die Zeile ausgewählt isttabIndex="0"
: Macht klickbare Zeilen fokussierbar
Zellen
role="gridcell"
: Identifiziert die Zellen
Paginierung
aria-label="Vorherige Seite|Nächste Seite"
: Beschreibt die Funktion der Paginierungsbuttonsaria-disabled="true|false"
: Zeigt an, ob ein Button deaktiviert istaria-live="polite"
: Kündigt Änderungen an der Paginierung an
Ladezustand und leere Tabelle
role="status"
: Identifiziert Statusmeldungenaria-live="polite"
: Kündigt Statusänderungen an
Tastaturnavigation
Die Table-Komponente unterstützt folgende Tastaturinteraktionen:
Sortierbare Spaltenüberschriften
- Tab: Fokussiert die nächste sortierbare Spaltenüberschrift
- Enter/Space: Ändert die Sortierrichtung
Klickbare Zeilen
- Tab: Fokussiert die nächste klickbare Zeile
- Enter/Space: Aktiviert die Zeilenklick-Funktion
Paginierung
- Tab: Fokussiert die Paginierungsbuttons
- Enter/Space: Aktiviert den Button
Beispiele für barrierefreie Verwendung
Standard-Tabelle
<Table
columns={columns}
data={data}
ariaLabel="Benutzerliste"
summary="Tabelle mit Benutzerdaten, sortierbar nach Name und Alter"
/>
Tabelle mit klickbaren Zeilen
<Table
columns={columns}
data={data}
onRowClick={handleRowClick}
ariaLabel="Benutzerliste mit klickbaren Zeilen"
/>
Tabelle mit Paginierung
<Table
columns={columns}
data={data}
paginated={true}
itemsPerPage={10}
currentPage={currentPage}
onPageChange={handlePageChange}
ariaLabel="Paginierte Benutzerliste"
/>
Tabelle mit Beschriftung
<Table
columns={columns}
data={data}
caption={<h2>Benutzerliste</h2>}
captionPosition="top"
ariaLabel="Benutzerliste"
/>
Best Practices
- Immer ein
ariaLabel
verwenden: Das Label hilft Screenreader-Benutzern, den Zweck der Tabelle zu verstehen - Beschreibende Spaltenüberschriften verwenden: Klare Überschriften helfen beim Verständnis der Daten
- Sortierbare Spalten kennzeichnen: Machen Sie deutlich, welche Spalten sortierbar sind
- Tastaturzugänglichkeit testen: Stellen Sie sicher, dass die Tabelle mit der Tastatur bedient werden kann
- Screenreader-Unterstützung testen: Stellen Sie sicher, dass die Tabelle mit Screenreadern zugänglich ist
Bekannte Einschränkungen
- Komplexe Tabellen: Sehr komplexe Tabellen mit verschachtelten Spalten können für Screenreader-Benutzer schwer zu verstehen sein
- Mobile Geräte: Auf kleinen Bildschirmen kann die Tabelle schwer zu bedienen sein
- Große Datenmengen: Sehr große Tabellen können die Performance beeinträchtigen