Poziom
AAA
Od wersji
WCAG 2.1
Pozycje
18 / 193
/ Kryterium WCAG

2.3.3 Animacja od interakcji

Ruch wywołany działaniem użytkownika, na przykład przewijaniem albo kliknięciem, da się wyłączyć, chyba że jest niezbędny.

/ Czego wymaga

Kryterium dotyczy animacji ruchu, którą wyzwala interakcja: tła z efektem paralaksy przesuwające się podczas przewijania, sekcje wjeżdżające na ekran, gdy pojawiają się w oknie, przejścia między stronami z powiększaniem lub przesuwaniem, karty obracające się po kliknięciu. U osób z zaburzeniami przedsionkowymi taki ruch potrafi wywołać zawroty głowy, nudności i bóle głowy. Ostrzeżenie im nie pomaga. Potrzebują, żeby ruch zniknął, a strona działała dalej tak samo.

Strona spełnia kryterium, gdy ruch, który nie jest niezbędny, da się wyłączyć: przełącznikiem w serwisie albo przez uszanowanie systemowego ustawienia ograniczenia ruchu, które CSS udostępnia jako cechę prefers-reduced-motion. Zmiany koloru, przezroczystości i rozmycia nie są animacją ruchu i kryterium ich nie obejmuje. Wyłączony jest też ruch niezbędny dla funkcji albo dla przekazywanej informacji. Kryterium ma poziom AAA, więc zgodność na poziomie AA od niego nie zależy.

To kryterium ma poziom AAA, więc nie jest wymagane do zgodności na poziomie AA.

/ Jak strony go nie spełniają

  • Tło z paralaksą przesuwa się podczas przewijania z inną prędkością niż pierwszy plan i nie da się tego wyłączyć.
  • Sekcje wjeżdżają albo powiększają się, gdy pojawiają się w oknie, a skrypt, który tym steruje, ignoruje ustawienie ograniczenia ruchu.
  • Przejścia między stronami przesuwają albo skalują cały ekran przy każdej nawigacji.
  • Płynne przewijanie na długich odcinkach jest narzucone każdemu użytkownikowi przez scroll-behavior: smooth.
  • Arkusz stylów nie ma ani jednego bloku prefers-reduced-motion, więc ustawienie systemu operacyjnego niczego nie zmienia.

/ Jak sprawdzić samodzielnie

  1. Włącz w systemie ograniczenie ruchu: w Windows 11 w sekcji Ułatwienia dostępu, Efekty wizualne, Efekty animacji, w macOS w sekcji Dostępność, Ekran, Redukuj ruch.
  2. Albo zasymuluj je w Chrome DevTools: otwórz kartę Rendering i ustaw emulację prefers-reduced-motion na reduce.
  3. Przeładuj stronę, a potem przewijaj, otwieraj menu i przechodź między stronami. Wszystko, co nadal wjeżdża, powiększa się, obraca albo przesuwa z inną prędkością, jest błędem, chyba że ruch jest niezbędny.
  4. Przeszukaj CSS pod kątem prefers-reduced-motion. Jeśli tej frazy nigdzie nie ma, style serwisu nie reagują na ustawienie.

/ Jak to naprawić

  • Zamknij ruch w zapytaniu o media: umieść przejścia i animacje keyframes w @media (prefers-reduced-motion: no-preference) albo wyłącz je w @media (prefers-reduced-motion: reduce) przez animation: none i transition: none.
  • W skryptach odczytaj window.matchMedia('(prefers-reduced-motion: reduce)').matches i pomiń efekty przewijania, paralaksę i przejścia między stronami, gdy wartość to true.
  • Zastąp ruch krótkim przenikaniem albo natychmiastową zmianą. Zmiana przezroczystości nie jest animacją ruchu w rozumieniu definicji WCAG.
  • Ustawiaj scroll-behavior: smooth tylko wewnątrz zapytania o media no-preference.

/ Co sprawdza nasz skaner

Nasz test motion-no-reduced najpierw szuka w arkuszach stylów, do których ma dostęp, jakiegokolwiek zapytania o media prefers-reduced-motion. Jeśli go nie ma, zgłasza do dziesięciu widocznych elementów z animacją CSS o nieskończonej liczbie powtórzeń. To miara zastępcza: test nie wywołuje żadnej interakcji, nie widzi ruchu sterowanego przez JavaScript, a jedno takie zapytanie gdziekolwiek na stronie go ucisza, nawet jeśli animacja działa dalej.

/ Kto je łamie, według naszych pomiarów

Zmierzone podmioty łamiące to kryterium, najwięcej wystąpień na górze
PodmiotSektorWystąpieniaWynik
Komisja Nadzoru Finansowegogovernment · PL1017
Uniwersytet Mikołaja Kopernikaeducation · PL106
Indianapoliscity · US318
Philadelphiacity · US38
Bydgoszczcity · PL27
Dallascity · US223
King Countygovernment · US215
Miami-Dade Countygovernment · US220
Nashvillecity · US212
New Orleanscity · US27
Poznańcity · PL21
San Diegocity · US263
State of Floridagovernment · US28
Bostoncity · US16
Bundesratgovernment · DE114
Lublincity · PL117
Narodowy Instytut Dziedzictwaculture · PL16
Prezydent RPgovernment · PL115

Jedna strona na podmiot, mierzona automatycznie w tygodniowym cyklu. Jeśli podmiot coś naprawił od ostatniego pomiaru, zmiana będzie widoczna przy następnym, a każdy podmiot może odpowiedzieć na swojej stronie.

/ Pytania o to kryterium

Czy WCAG wymaga prefers-reduced-motion?

WCAG nie wymienia tej cechy w treści kryterium. Wymaga, by animację ruchu wyzwalaną przez interakcję dało się wyłączyć, a uszanowanie prefers-reduced-motion to technika, którą W3C opisuje jako sposób na spełnienie tego wymagania. Przełącznik w samym serwisie też je spełnia. Wymaganie ma poziom AAA, czyli wykracza poza to, czego potrzeba do zgodności na poziomie AA.

Co liczy się jako animacja ruchu w kryterium 2.3.3?

WCAG definiuje ją jako kroki dodane między dwoma stanami, które tworzą złudzenie ruchu albo wrażenie płynnego przejścia, na przykład element wjeżdżający na miejsce albo zmieniający rozmiar. Zmiany koloru, rozmycia i przezroczystości, które nie zmieniają postrzeganego rozmiaru, kształtu ani położenia elementu, są wyłączone, więc zwykłe przenikanie pod kryterium nie podpada.

Czym różni się 2.3.3 od 2.2.2?

Kryterium 2.2.2 Pauza, zatrzymanie, ukrycie ma poziom A i dotyczy treści, która sama porusza się dłużej niż pięć sekund, na przykład karuzeli. Kryterium 2.3.3 ma poziom AAA i dotyczy ruchu, który użytkownik sam wywołuje przewijaniem, kliknięciem albo nawigacją. Jedna strona może nie spełniać obu: niekończąca się animacja dekoracyjna i efekt paralaksy to osobne problemy.