Jak respektować prefers-reduced-motion

prefers-reduced-motion: wzorce CSS, JavaScript i React | We.Inc

Wykryj ustawienie ograniczenia ruchu w CSS i JavaScript, zobacz na żywo swoje własne ustawienie i skopiuj wzorce, które zamieniają duży ruch na przenikanie zamiast usuwać animacje.

Jak respektować prefers-reduced-motion

prefers-reduced-motion to cecha mediów w CSS, która informuje, czy odwiedzający poprosił swoje urządzenie o mniej ruchu. Ma dwie wartości: no-preference i reduce. Duży ruch, taki jak paralaksa, przybliżenia i przesunięcia, umieść w zapytaniu, a gdy wartość to reduce, zamień go na krótkie przenikanie lub brak animacji.

Gdzie ludzie włączają to ustawienie

Ludzie włączają ograniczenie ruchu, bo przesuwanie, przybliżanie i paralaksa mogą wywoływać zawroty głowy, nudności lub bóle głowy, zwłaszcza u osób z zaburzeniami błędnika. Plakietka poniżej odczytuje na żywo ustawienie Twojego urządzenia, a demo pokazuje tę samą animację w wersji pełnej i ograniczonej, abyś mógł je porównać przed wyborem wzorca.

Najczęściej zadawane pytania

Jakie wartości ma prefers-reduced-motion?

Dwie: no-preference, gdy odwiedzający niczego nie ustawił, oraz reduce, gdy poprosił o mniej ruchu. Samo @media (prefers-reduced-motion) oznacza to samo co zapytanie o reduce.

Jak sprawdzić prefers-reduced-motion w JavaScript?

Wywołaj window.matchMedia("(prefers-reduced-motion: reduce)") i odczytaj właściwość matches. Dodaj listener zdarzenia change do zwróconego obiektu, aby reagować, gdy ustawienie zmieni się przy otwartej stronie.

Czy przy ustawieniu reduce wyłączyć wszystkie animacje?

Nie. Prośba dotyczy mniejszej ilości ruchu, a nie zamrożonej strony. Zachowaj zmiany koloru, krótkie przenikania i wskaźniki postępu, a usuń lub zmniejsz ruch, taki jak przesuwanie, skalowanie, obracanie i paralaksa.

Czy WCAG wymaga respektowania ograniczenia ruchu?

WCAG 2.3.3 Animacja wywołana interakcjami, poziom AAA, wymaga, aby ruch wywołany interakcją dało się wyłączyć, chyba że jest niezbędny. Respektowanie ustawienia systemowego to jeden z wymienionych sposobów spełnienia tego kryterium. Niezależnie od tego 2.2.2 Pauza, zatrzymanie, ukrycie na poziomie A obejmuje ruch, który zaczyna się samoczynnie.

Jak obsłużyć ograniczenie ruchu w Tailwind?

Użyj wariantu motion-safe:, aby zastosować animację tylko wtedy, gdy nie ustawiono preferencji, lub motion-reduce:, aby nadpisać ją przy ustawieniu reduce, na przykład motion-safe:animate-bounce.

Jaki ruch sprawia problemy

CSS z brakiem ruchu jako punktem wyjścia

Skrypty i biblioteki

Wzorce CSS

Ruch jako ulepszenie

Karta wsuwa się tylko wtedy, gdy nie ustawiono preferencji. Wszyscy pozostali widzą delikatne przenikanie.

Siatka bezpieczeństwa dla istniejących stron

Przydatna, gdy nie możesz przepisać każdej animacji. Czasy trwania stają się prawie zerowe, a nie none, więc zdarzenia animationend i transitionend nadal się uruchamiają.

JavaScript i React

Odczyt ustawienia i śledzenie zmian

matchMedia zwraca listę na żywo. Jej zdarzenie change uruchamia się, gdy odwiedzający przełączy ustawienie.

Hook React: usePrefersReducedMotion

Na serwerze startuje z wartością true, więc nic się nie animuje, zanim przeglądarka nie odpowie.

Na co zamienić każdy efekt

Ograniczone alternatywy

Twoje ustawienie ruchu

Plakietka odczytuje ustawienie Twojego urządzenia przez matchMedia, a przełącznik podglądu pokazuje ograniczoną animację bez zmieniania systemu.

Tryb podglądu

Według mojego ustawienia

Podgląd pełnego ruchu

Podgląd ograniczonego

Odtwórz ponownie

Ograniczony: krótkie przenikanie w miejscu.

Pełny ruch: panel wlatuje, obraca się i rośnie.

Zacznij za darmo · Bez karty kredytowej

Powiązane: Poradniki

Produkt

Dla kogo

Funkcje

Zasoby

Firma

Mapa strony