Barrierefreiheit: keine aria-Attribute, kein :focus, kein prefers-reduced-motion #9

Open
opened 2026-10-18 23:23:35 +02:00 by gilli · 0 comments
Owner

Problem

Die Oberfläche ist rein visuell.

  • index.html enthält kein aria- und kein role=.
  • Die drei Instrumente (max-Q, max-G, Stabilität) sind leere <i>-Balken in .meter (styles.css:131-135); der Zahlenwert steht daneben, gehört aber nicht zum Balken.
  • :focus ist nicht gestylt — styles.css:56-63 definiert nur :hover, :disabled, .primary, .ghost. Tastaturnutzung ist damit kaum sichtbar.
  • prefers-reduced-motion fehlt. Der Kamera-Shake (src/render.js:489-492) setzt die Kameraposition pro Frame zufällig, genau der Fall, den die Abfrage beruhigen will.

Vorschlag

  • role="meter" plus aria-valuenow/aria-valuemax auf den Balken, oder aria-hidden auf den Balken, wenn die Zahl daneben schon reicht.
  • :focus-visible mit der bestehenden --accent-Kante.
  • Shake bei prefers-reduced-motion: reduce auf 0 setzen.

Prüfung

Tabber durch die Builder-Schaltflächen und sieht eindeutig, welche den Fokus hält. Screenshots mit und ohne prefers-reduced-motion zeigen keinen Kameraversatz.

## Problem Die Oberfläche ist rein visuell. - `index.html` enthält kein `aria-` und kein `role=`. - Die drei Instrumente (max-Q, max-G, Stabilität) sind leere `<i>`-Balken in `.meter` (`styles.css:131-135`); der Zahlenwert steht daneben, gehört aber nicht zum Balken. - `:focus` ist nicht gestylt — `styles.css:56-63` definiert nur `:hover`, `:disabled`, `.primary`, `.ghost`. Tastaturnutzung ist damit kaum sichtbar. - `prefers-reduced-motion` fehlt. Der Kamera-Shake (`src/render.js:489-492`) setzt die Kameraposition pro Frame zufällig, genau der Fall, den die Abfrage beruhigen will. ## Vorschlag - `role="meter"` plus `aria-valuenow`/`aria-valuemax` auf den Balken, oder `aria-hidden` auf den Balken, wenn die Zahl daneben schon reicht. - `:focus-visible` mit der bestehenden `--accent`-Kante. - Shake bei `prefers-reduced-motion: reduce` auf 0 setzen. ## Prüfung Tabber durch die Builder-Schaltflächen und sieht eindeutig, welche den Fokus hält. Screenshots mit und ohne `prefers-reduced-motion` zeigen keinen Kameraversatz.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
gilli/rocket-sim#9
No description provided.