Flex Barrierefreiheit
Implementierte Verbesserungen
Die Flex-Komponente wurde mit folgenden Barrierefreiheitsverbesserungen aktualisiert:
Semantische Struktur
- Unterstützung für semantische HTML-Elemente (
div,section,article,main,aside,header,footer,nav,form,fieldset) - Korrekte Verwendung von ARIA-Rollen für verschiedene Anwendungsfälle
- Möglichkeit, benutzerdefinierte ARIA-Attribute zu setzen
- Unterstützung für Landmark-Regionen (z.B.
<FlexA11y as="nav" role="navigation">)
ARIA-Attribute
role- Definiert die Rolle des Elementsaria-label- Bietet eine Beschreibung des Elementsaria-labelledby- Verknüpft ein Label mit dem Elementaria-describedby- Verknüpft eine ausführliche Beschreibung mit dem Elementaria-owns- Definiert Elemente, die zu diesem Element gehörenaria-controls- Definiert Elemente, die von diesem Element gesteuert werdenaria-expanded- Zeigt an, ob ein Element erweitert istaria-haspopup- Zeigt an, ob ein Element ein Popup hataria-hidden- Versteckt ein Element vor Screenreadernaria-live- Definiert eine Live-Regionaria-relevant- Definiert, welche Änderungen in einer Live-Region relevant sindaria-atomic- Definiert, ob eine Live-Region als Ganzes aktualisiert wirdaria-busy- Zeigt an, ob ein Element im Ladezustand istaria-current- Zeigt an, ob ein Element der aktuelle Kontext istaria-roledescription- Bietet eine benutzerdefinierte Rollenbeschreibungaria-keyshortcuts- Definiert Tastaturkürzel für ein Elementaria-setsize- Definiert die Größe einer Gruppearia-posinset- Definiert die Position eines Elements in einer Gruppearia-level- Definiert die Hierarchieebene eines Elements
Tastaturunterstützung
- Unterstützung für
tabIndexzur Steuerung der Tabulatorreihenfolge - Möglichkeit, Flex-Container fokussierbar zu machen
- Unterstützung für Tastaturkürzel durch
aria-keyshortcuts
Beispiel-Implementierung
// Einfache Flex-Box
<FlexA11y gap={4} alignItems="center">
<Icon name="user" aria-hidden="true" />
<span>Benutzername</span>
</FlexA11y>
// Navigation mit semantischer Struktur
<FlexA11y
as="nav"
role="navigation"
ariaLabel="Hauptnavigation"
gap={4}
>
<a href="/">Startseite</a>
<a href="/produkte">Produkte</a>
<a href="/kontakt">Kontakt</a>
</FlexA11y>
// Hauptinhalt mit semantischer Struktur
<FlexA11y
as="main"
role="main"
direction="column"
gap={6}
>
<h1>Willkommen</h1>
<p>Dies ist der Hauptinhalt der Seite.</p>
</FlexA11y>
// Seitenleiste mit semantischer Struktur
<FlexA11y
as="aside"
role="complementary"
ariaLabel="Verwandte Informationen"
direction="column"
gap={4}
>
<h2>Verwandte Artikel</h2>
<ul>
<li><a href="/artikel/1">Artikel 1</a></li>
<li><a href="/artikel/2">Artikel 2</a></li>
</ul>
</FlexA11y>
// Formular mit semantischer Struktur
<FlexA11y
as="form"
role="form"
ariaLabel="Kontaktformular"
direction="column"
gap={4}
>
<label htmlFor="name">Name</label>
<input id="name" type="text" />
<button type="submit">Absenden</button>
</FlexA11y>
// Live-Region für Statusmeldungen
<FlexA11y
ariaLive="polite"
ariaAtomic={true}
ariaRelevant="additions text"
>
<div>Status: Erfolgreich gespeichert</div>
</FlexA11y>
Barrierefreiheitstests
Die Flex-Komponente wurde mit folgenden Tests auf Barrierefreiheit geprüft:
- Automatisierte Tests mit jest-axe zur Überprüfung der ARIA-Attribute
- Manuelle Tests zur Überprüfung der semantischen Struktur
- Screenreader-Tests zur Überprüfung der korrekten Ankündigungen
Bekannte Einschränkungen
- Die Komponente unterstützt derzeit keine automatische Anpassung der Rolle basierend auf dem gewählten Element
- Die Komponente unterstützt derzeit keine automatische Validierung der ARIA-Attribute
- Die Komponente unterstützt derzeit keine automatische Generierung von IDs für ARIA-Attribute