Zoom Barrierefreiheit
Implementierte Verbesserungen
Die Zoom-Komponente wurde mit folgenden Barrierefreiheitsverbesserungen aktualisiert:
ARIA-Attribute
aria-label
- Bietet eine Beschreibung der Animationaria-labelledby
- Verknüpft ein Label mit der Animationaria-describedby
- Verknüpft eine ausführliche Beschreibung mit der Animationaria-hidden
- Versteckt die Animation vor Screenreadern, wenn nötigaria-live
- Definiert eine Live-Region für Ankündigungen der Animationaria-atomic
- Definiert, ob die Live-Region als Ganzes aktualisiert wirdaria-relevant
- Definiert, welche Änderungen in der Live-Region relevant sindaria-busy
- Zeigt an, ob die Animation im Ladezustand istaria-roledescription
- Bietet eine benutzerdefinierte Rollenbeschreibung
Reduzierte Bewegung
- Respektiert die Einstellung
prefers-reduced-motion
des Benutzers - Deaktiviert Animationen automatisch, wenn der Benutzer reduzierte Bewegung bevorzugt
- Bietet eine sofortige Darstellung ohne Übergangseffekte für Benutzer mit Bewegungsempfindlichkeit
Epilepsie-Sicherheit
- Option zur Begrenzung der Animationsgeschwindigkeit für Benutzer mit Epilepsie
- Mindestdauer für Animationen, um schnelle Blitzeffekte zu vermeiden
- Sanftere Übergänge für mehr Sicherheit
Screenreader-Unterstützung
- Ankündigung von Animationen für Screenreader
- Benutzerdefinierte Ankündigungen für Ein- und Ausblendungen
- Versteckte Beschreibungen für zusätzliche Informationen
- Semantisch korrekte Struktur mit anpassbarem HTML-Element
Beispiel-Implementierung
// Einfache Zoom-Animation
<ZoomA11y
in={isVisible}
scale={0.5}
>
<div>Animierter Inhalt</div>
</ZoomA11y>
// Mit Screenreader-Ankündigungen
<ZoomA11y
in={isVisible}
scale={0.75}
announceAnimation
enterAnnouncement="Inhalt wird eingeblendet"
exitAnnouncement="Inhalt wird ausgeblendet"
ariaLive="polite"
>
<div>Animierter Inhalt mit Ankündigung</div>
</ZoomA11y>
// Mit reduzierter Bewegung
<ZoomA11y
in={isVisible}
scale={0.5}
respectReducedMotion
>
<div>Animierter Inhalt mit reduzierter Bewegung</div>
</ZoomA11y>
// Mit Epilepsie-Sicherheit
<ZoomA11y
in={isVisible}
scale={0.5}
epilepsySafe
>
<div>Animierter Inhalt mit Epilepsie-Sicherheit</div>
</ZoomA11y>
// Mit semantischem HTML-Element
<ZoomA11y
in={isVisible}
scale={0.5}
as="section"
ariaLabel="Animierter Abschnitt"
>
<div>Animierter Inhalt in einem semantischen Element</div>
</ZoomA11y>
// Mit ARIA-Attributen
<ZoomA11y
in={isVisible}
scale={0.5}
ariaLabel="Animierter Inhalt"
ariaLive="assertive"
ariaAtomic={true}
ariaRoledescription="Zoom-Animation"
>
<div>Animierter Inhalt mit ARIA-Attributen</div>
</ZoomA11y>
// Mit Callbacks
<ZoomA11y
in={isVisible}
scale={0.5}
onEnter={() => console.log('Animation startet')}
onEntered={() => console.log('Animation abgeschlossen')}
onExit={() => console.log('Ausblenden startet')}
onExited={() => console.log('Ausblenden abgeschlossen')}
>
<div>Animierter Inhalt mit Callbacks</div>
</ZoomA11y>
// Mit direkter Anwendung auf ein Element
<ZoomA11y
in={isVisible}
scale={0.5}
ariaLabel="Animierter Button"
>
<button onClick={handleClick}>Klick mich</button>
</ZoomA11y>
Barrierefreiheitstests
Die Zoom-Komponente wurde mit folgenden Tests auf Barrierefreiheit geprüft:
- Automatisierte Tests mit jest-axe zur Überprüfung der ARIA-Attribute
- Reduzierte-Bewegung-Tests zur Überprüfung der Respektierung von
prefers-reduced-motion
- Epilepsie-Sicherheits-Tests zur Überprüfung der Animationsgeschwindigkeit
- Screenreader-Tests zur Überprüfung der korrekten Ankündigungen
- Visuelle Tests zur Überprüfung der Animation und des Verhaltens
Bekannte Einschränkungen
- Die Komponente unterstützt derzeit keine automatische Anpassung der Animation basierend auf der Bildschirmgr öße
- Die Komponente unterstützt derzeit keine automatische Anpassung der Animation basierend auf der Verbindungsgeschwindigkeit
- Die Komponente unterstützt derzeit keine automatische Anpassung der Animation basierend auf der Batteriekapazität
- Die Komponente unterstützt derzeit keine automatische Anpassung der Animation basierend auf der Prozessorleistung