Dlaczego zrobiliśmy to teraz
Kilku nauczycieli napisało do nas z pytaniem, czy którekolwiek z symulacji można wykorzystać na lekcjach z uczniami niedowidzącymi. Szczera odpowiedź brzmiała: nie wiedzieliśmy. To było wystarczająco żenujące, by zmotywować nas do audytu. Użyliśmy Lighthouse, axe DevTools i ręcznych przejść wyłącznie klawiaturą na każdej stronie serwisu.
Podsumowanie wyników (przed)
Co znaleźliśmy
tabindex="0" do wrappera canvas
oraz nasłuchiwanie klawisza Escape, które odbiera fokus canvasowi
i zwraca go stronie.
<label> na wszystkich elementach
sterujących
<input type="range"> bez powiązanej etykiety
— tylko wizualny tekst obok. Czytniki ekranu ogłaszały
„suwak” bez żadnego kontekstu.
<label> albo
dodano atrybuty aria-label i
aria-describedby tam, gdzie etykieta musiała być
oddzielona.
--color-muted-2 (#7a88a0) na ciemnym
tle (#060d1a) dawał współczynnik kontrastu 3.4:1 — poniżej
wymogu WCAG AA wynoszącego 4.5:1 dla zwykłego tekstu.
--color-muted-2 do #8fa5c0
(4.6:1). Podobnie zaktualizowano --color-muted.
role="img" oraz
aria-label ze znaczącym opisem tego, co pokazuje
symulacja, a także link do wyjaśnienia tekstowego.
outline: none usuwał ramkę
fokusu przeglądarki ze wszystkich elementów interaktywnych.
Użytkownicy klawiatury nie mieli żadnej wizualnej wskazówki, gdzie
znajduje się fokus.
:focus-visible z 2px bursztynowym konturem z
odstępem na wszystkich elementach interaktywnych.
Najtrudniejszy problem: ruchome symulacje
Najtrudniejsze wyzwanie dostępności w symulacjach WebGL nie jest techniczne — jest koncepcyjne. Użytkownik czytnika ekranu nie może w sensowny sposób doświadczyć symulacji stada czy wahadła. Canvas to bitmapa; nie ma czego opowiadać.
Nasze podejście polegało na oddzieleniu interaktywności od doświadczenia:
- Wszystkie parametry symulacji (prędkość, masa, tłumienie) są udostępnione jako prawdziwe pola HTML osiągalne z klawiatury
-
Kluczowe wyniki liczbowe (energia, liczba cząstek, częstość
kolizji) znajdują się w regionach live
(
aria-live="polite"), dzięki czemu czytniki ekranu ogłaszają zmiany - Każda symulacja ma teraz tekstowe podsumowanie, które opisuje, co pokazuje, co użytkownik może zmienić i co warto obserwować
To nie sprawia, że nasze symulacje są w pełni dostępne dla użytkowników z zaburzeniami wzroku — wymagałoby to zupełnie innego modelu interakcji. Ale sprawia, że otaczający kontekst i elementy sterujące są w pełni dostępne, co jest istotnym ulepszeniem.
Co jeszcze pozostaje do zrobienia
-
Obsługa ograniczonego ruchu — niektóre symulacje powinny się
zatrzymywać lub pokazywać statyczną klatkę, gdy ustawione jest
prefers-reduced-motion - Tryb wysokiego kontrastu — nasz niestandardowy ciemny motyw koliduje z trybem wysokiego kontrastu Windows
- Pełne sterowanie parametrami symulacji z klawiatury bez myszy (w trakcie prac)