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
tabIndex
zur 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