fix(a11y): Seite bleibt bei Bewegungsreduktion leer bis zum Scrollen #67
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Symptom
Wer im Betriebssystem "Bewegung reduzieren" eingeschaltet hat, bekommt die Startseite fast leer ausgeliefert. AOS (
src/main.js:18,AOS.init({ startEvent: "load" })) setzt seine Elemente per CSS aufopacity: 0und deckt sie erst beim Scrollen auf — unabhaengig vonprefers-reduced-motion. Wer nicht scrollt, sieht den Inhalt nie.Beleg
Gemessen am 2026-09-06 gegen die lokale Instanz, Viewport 390x844, Playwright-Kontext mit
reducedMotion: 'reduce', Zustand nach 1 s ohne Scroll:Alle 50 AOS-Elemente der Startseite sind unsichtbar. Die neue Video-Testimonial-Sektion (PR #65) ist als Gegenprobe voll sichtbar (
opacity: 1) — sie nutzt kein AOS und hat unter Bewegungsreduktionanimation: none.Das Gate
reduced_motionder design-gates meldet deshalb dauerhaft FAIL; der Messwert schwankt nur damit, wie viele AOS-Sektionen gerade unterhalb des Anfangsfensters liegen.Warum das ein eigener Vorgang ist
Ein globaler Eingriff waehrend PR #65 wurde versucht und wieder zurueckgenommen, weil er es messbar verschlimmert:
AOS.init({ disable: () => matchMedia('(prefers-reduced-motion: reduce)').matches })verhindert nur das Animieren, nicht das Verstecken. Gemessen: fehlende Tinte stieg von 2,4 % auf 20 %.[data-aos] { opacity: 1 !important; transform: none !important }global ueberschreibt auch legitime Dauer-Transformationen anderer Sektionen und veraendert deren Darstellung gegenueber dem Normalzustand. Ebenfalls 16-20 %.Der richtige Weg braucht eine eigene Runde: entweder die
data-aos-Attribute serverseitig/beim Start entfernen, bevor AOS sein CSS anwendet, oder AOS unter Bewegungsreduktion gar nicht erst laden. Beides mit Sichtpruefung ueber alle Sektionen, nicht nur ueber das Gate.Abnahmekriterien
prefers-reduced-motion: reduceist nach 1 s ohne Scroll jedes Element sichtbar (opacity >= 0.9)reduced_motionder design-gates PASS auf beiden Viewports