Como respeitar o prefers-reduced-motion

prefers-reduced-motion: padrões em CSS, JavaScript e React | We.Inc

Detecte a configuração de reduzir movimento em CSS e JavaScript, veja sua própria configuração ao vivo e copie padrões que trocam movimentos grandes por fades em vez de apagar a animação.

Como respeitar o prefers-reduced-motion

prefers-reduced-motion é uma media feature do CSS que informa se o visitante pediu ao dispositivo menos movimento. Ela tem dois valores, no-preference e reduce. Envolva movimentos grandes, como parallax, zooms e deslizamentos, em uma query e, quando o valor for reduce, troque-os por um fade curto ou por nenhuma animação.

Onde as pessoas ativam a configuração

As pessoas ativam a redução de movimento porque deslizamentos, zooms e parallax podem causar tontura, náusea ou dor de cabeça, principalmente em quem tem distúrbios vestibulares. O selo abaixo lê a configuração do seu próprio dispositivo ao vivo, e a demonstração mostra a mesma animação na versão completa e na reduzida, para você comparar antes de escolher um padrão.

Perguntas frequentes

Quais valores o prefers-reduced-motion tem?

Dois: no-preference, quando o visitante não definiu nada, e reduce, quando ele pediu menos movimento. Escrever @media (prefers-reduced-motion) sozinho é o mesmo que perguntar por reduce.

Como verifico o prefers-reduced-motion em JavaScript?

Chame window.matchMedia("(prefers-reduced-motion: reduce)") e leia a propriedade matches. Adicione um listener do evento change ao objeto retornado para reagir quando a configuração mudar com a página aberta.

Devo desligar todas as animações quando reduce estiver ativo?

Não. O pedido é por menos movimento, não por uma página congelada. Mantenha mudanças de cor, fades curtos e indicadores de progresso, e remova ou diminua movimentos como deslizar, escalar, girar e parallax.

Respeitar a redução de movimento é exigido pelo WCAG?

O WCAG 2.3.3 Animação a partir de interações, nível AAA, pede que o movimento acionado por interação possa ser desligado, a menos que seja essencial. Respeitar a configuração do sistema é uma das formas listadas de cumprir isso. À parte, o 2.2.2 Pausar, parar, ocultar, de nível A, cobre movimentos que começam sozinhos.

Como lido com redução de movimento no Tailwind?

Use a variante motion-safe: para aplicar uma animação só quando não há preferência definida, ou motion-reduce: para sobrescrever uma quando reduce está ativo, por exemplo motion-safe:animate-bounce.

Quais movimentos causam problemas

CSS sem movimento por padrão

Scripts e bibliotecas

Padrões em CSS

Movimento como melhoria

O card só desliza para dentro quando não há preferência definida. Todos os outros veem um fade suave.

Uma rede de segurança para sites existentes

Útil quando você não consegue reescrever todas as animações. As durações viram quase zero em vez de none, então os eventos animationend e transitionend continuam disparando.

JavaScript e React

Ler a configuração e acompanhar mudanças

matchMedia retorna uma lista ao vivo. O evento change dela dispara quando o visitante troca a configuração.

Hook React: usePrefersReducedMotion

Começa como true no servidor para que nada anime antes de o navegador responder.

Pelo que trocar cada efeito

Alternativas reduzidas

Sua configuração de movimento

O selo lê a configuração do seu dispositivo com matchMedia, e o seletor de prévia mostra a animação reduzida sem mudar o seu sistema.

Modo de prévia

Seguir minha configuração

Prévia com movimento completo

Prévia reduzida

Repetir

Reduzido: um fade curto no lugar.

Movimento completo: o painel voa, gira e cresce.

Comece grátis · Sem cartão de crédito

Relacionados: Guias

Produto

Para quem é

Recursos

Recursos

Empresa

Mapa do site