Movimiento

Prefers reduced motion: animaciones para todo el mundo

Para algunas personas, un scroll con parallax o una cabecera que hace zoom no es un placer, es un mareo. Un solo ajuste te dice quiénes son. Así se respeta sin perder tu diseño.

GradientlyCuenta verificada de Gradiently··6 min de lectura
Portada: Quiet Sandbar · GR·MTHB·3C

La versión corta

  • prefers-reduced-motion es una media feature de CSS que indica si un visitante ha pedido a su dispositivo que reduzca al mínimo el movimiento no esencial.
  • La gente activa el movimiento reducido por muchas razones, entre ellas los trastornos vestibulares, en los que el movimiento en pantalla puede provocar mareos, náuseas o dolor de cabeza.
  • Reducir el movimiento no tiene por qué significar eliminarlo: sustituye los desplazamientos grandes, como deslizamientos, zooms y parallax, por fundidos suaves, y detén los bucles que se reproducen solos.
  • Un patrón fiable es escribir primero el diseño estático y añadir movimiento solo dentro de una media query prefers-reduced-motion: no-preference.
  • Todos los sistemas operativos tienen un ajuste para reducir el movimiento, así que puedes probar tu web activándolo.
En esta página

Prefers reduced motion, que en CSS se escribe prefers-reduced-motion, es una media feature que le dice a tu web que un visitante ha pedido a su dispositivo que reduzca al mínimo el movimiento no esencial. Cuando devuelve reduce, deberías calmar la página: detener los bucles que se reproducen solos, sustituir deslizamientos, zooms y parallax por fundidos suaves o por nada, y mostrar versiones estáticas de los fondos animados. Es poco trabajo y hace que una web sea usable para personas que, de otro modo, la abandonarían encontrándose mal.

Para quién es el movimiento reducido

Algunas personas tienen trastornos vestibulares, que afectan al oído interno y al sentido del equilibrio y del movimiento del cerebro. Para ellas, el movimiento grande en pantalla, sobre todo el parallax, los zooms y los elementos que se deslizan por áreas amplias, puede desencadenar mareos, náuseas, dolor de cabeza o desorientación. Otras encuentran distractor el movimiento constante, tienen migrañas o simplemente prefieren una pantalla más tranquila. Todas usan el mismo interruptor en los ajustes de su dispositivo, y no deberían tener que explicar por qué.

DispositivoDónde está el ajuste
MacAjustes del Sistema, Accesibilidad, Pantalla, Reducir movimiento
iPhone y iPadAjustes, Accesibilidad, Movimiento, Reducir movimiento
Windows 11Configuración, Accesibilidad, Efectos visuales, Efectos de animación (desactivados)
AndroidAjustes, Accesibilidad, Quitar animaciones (la ruta varía según el fabricante y la versión)
Los navegadores leen estos ajustes y se los comunican a tu web mediante prefers-reduced-motion.

Qué reducir y qué puede quedarse

Reducir el movimiento no es lo mismo que eliminarlo. El objetivo es quitar el movimiento que simula un desplazamiento por el espacio o que ocupa grandes partes de la pantalla, y detener todo lo que se reproduce solo. Las respuestas pequeñas y rápidas y los fundidos sencillos suelen estar bien, y a menudo ayudan a entender qué ha cambiado.

Reducir o quitar

  • El scroll con parallax y el movimiento ligado al scroll
  • Grandes deslizamientos, zooms y transiciones de pasar página
  • Vídeo con reproducción automática y fondos animados
  • Elementos que giran, rebotan o tiemblan
  • Carruseles que avanzan solos

Normalmente se puede mantener

  • Fundidos de opacidad y cambios de color
  • Respuestas pequeñas y rápidas al pasar el cursor o al pulsar
  • Indicadores de progreso que muestran que algo está en marcha
  • El movimiento que el visitante inicia y controla, como arrastrar
  • Imágenes fijas en lugar de imágenes en movimiento

Sustituye en lugar de borrar siempre que puedas. Si un panel suele entrar deslizándose desde un lado, deja que aparezca con un fundido. Si la cabecera reproduce un bucle, muestra un fotograma fijo. El diseño sigue intacto; solo desaparece el desplazamiento.

Cómo respetar prefers-reduced-motion en CSS

El enfoque más sólido es tratar el movimiento como una mejora. Escribe primero el diseño estático y añade el movimiento dentro de una media query que solo se aplica cuando el visitante no tiene ninguna preferencia. Si la consulta no está soportada o el ajuste está activado, la página simplemente queda quieta. La página de MDN sobre prefers-reduced-motion documenta esta media feature.

css
/* Still by default */
.hero-bg {
  background: linear-gradient(135deg, #1e1b4b, #6d28d9 55%, #db2777);
  background-size: 100% 100%;
}
.card {
  opacity: 0;
  transition: opacity 200ms ease-out; /* a fade is fine for everyone */
}
.card.is-visible {
  opacity: 1;
}

/* Movement only for visitors with no preference */
@media (prefers-reduced-motion: no-preference) {
  .hero-bg {
    background-size: 200% 200%;
    animation: drift 20s linear infinite alternate;
  }
  .card {
    transform: translateY(24px);
    transition: opacity 200ms ease-out, transform 300ms cubic-bezier(0, 0, 0.2, 1);
  }
  .card.is-visible {
    transform: none;
  }
}

@keyframes drift {
  to { background-position: 100% 100%; }
}
El movimiento como mejora. Con el movimiento reducido activado, las tarjetas siguen apareciendo con un fundido, pero nada se desplaza y el fondo se queda quieto.

Movimiento reducido en JavaScript, vídeo y canvas

El movimiento controlado por scripts, como los efectos de scroll, los fondos en canvas o WebGL y el vídeo, necesita una comprobación en JavaScript. Lee el ajuste con matchMedia y escucha los cambios, porque la gente puede activarlo con tu página abierta.

js
const query = matchMedia('(prefers-reduced-motion: reduce)')
const video = document.querySelector('.hero-video')

function apply() {
  if (query.matches) {
    video?.pause()            // the poster image stays
    stopBackgroundLoop()      // your canvas or WebGL loop: draw one frame, then stop
  } else {
    video?.play().catch(() => {})
    startBackgroundLoop()
  }
}

query.addEventListener('change', apply)
apply()
Una sola comprobación para todo lo que va por script. Conserva el póster o un único fotograma renderizado para que la página siga pareciendo terminada.

Los vídeos de fondo y los degradados en vivo son los culpables más habituales porque se reproducen solos. Vídeos de fondo en webs y degradados con shaders muestran dónde va la comprobación.

Qué dicen las WCAG sobre el movimiento

Tres criterios de conformidad de las Pautas de Accesibilidad para el Contenido Web tratan el movimiento. Admitir el movimiento reducido es la forma práctica de cumplir el primero; un control de pausa resuelve el segundo.

CriterioNivelEn resumen
2.3.3 Animación desde las interaccionesAAAEl movimiento que provoca una interacción se puede desactivar, salvo que sea esencial
2.2.2 Poner en pausa, detener, ocultarAEl contenido en movimiento que empieza solo y dura más de cinco segundos se puede pausar u ocultar
2.3.1 Umbral de tres destellos o menosANada destella más de tres veces en un mismo segundo
La guía del W3C sobre Animation from Interactions explica el primero en detalle, con ejemplos.

Diseñar versiones estáticas que sigan viéndose bien

La versión estática no debería parecer una versión rota. En los fondos animados, elige el fotograma que mejor se ve por sí solo, no el que casualmente sea el primero. En las entradas, asegúrate de que el diseño final está completo sin ellas. En los bucles hechos con un material de marca, una imagen fija bien elegida del mismo material mantiene intacta la identidad. Los principios del motion design proponen probar cada animación con un solo fotograma en pausa precisamente por esto.

Gradiently sigue la misma regla: los Marks en vivo de la app se quedan quietos cuando tu dispositivo pide movimiento reducido, y cualquier diseño que exportes como bucle también se puede exportar como PNG estático del mismo Mark, para los sitios donde el movimiento no es bienvenido. En los posts para redes, donde no puedes detectar el ajuste, lo más considerado es un movimiento lento y suave; mira fondos degradados animados.

  1. 1

    Activa el ajuste

    Activa la reducción de movimiento en tu sistema operativo y recarga la web.

  2. 2

    Revisa todo lo que se mueve

    Cabeceras, carruseles, efectos de scroll, vídeos, canvas y estados de carga deberían estar tranquilos.

  3. 3

    Cámbialo con la página abierta

    Tus scripts deberían seguir el cambio sin recargar.

  4. 4

    Emúlalo en las herramientas para desarrolladores

    Chrome y Firefox pueden emular la media feature, lo que es más rápido mientras trabajas.

  5. 5

    Mira el diseño estático

    Asegúrate de que la versión reducida parece intencionada y completa, no algo que no ha terminado de cargar.

Preguntas frecuentes

¿Qué es prefers-reduced-motion?

Es una media feature de CSS que le dice a una web si el visitante ha pedido a su dispositivo que reduzca al mínimo el movimiento no esencial. Sus valores son reduce y no-preference.

¿Movimiento reducido significa quitar todas las animaciones?

No. Quita o sustituye los desplazamientos grandes, el parallax, los zooms y los bucles automáticos, pero los fundidos suaves y las respuestas pequeñas suelen estar bien.

¿Cómo pruebo prefers-reduced-motion?

Activa el ajuste de reducir movimiento en tu sistema operativo y recarga la página, o emula la media feature en las herramientas para desarrolladores de Chrome o Firefox.

¿Las WCAG exigen admitir el movimiento reducido?

El criterio 2.3.3 Animación desde las interacciones, de nivel AAA, pide que el movimiento provocado por una interacción se pueda desactivar, y admitir el movimiento reducido es la forma habitual de cumplirlo. Los criterios de nivel A también cubren pausar el movimiento automático y limitar los destellos.

¿Por qué algunas personas activan el movimiento reducido?

Algunas tienen trastornos vestibulares, en los que el movimiento en pantalla puede provocar mareos o náuseas; otras tienen migrañas, encuentran distractor el movimiento o simplemente prefieren una pantalla más tranquila.

Compartir esta guía

Escrito por GradientlyCuenta verificada de Gradiently

El equipo detrás de Gradiently, una herramienta de diseño creada en torno a los Marks: degradados vivos que hacen que todo lo que diseñas parezca tuyo.

Ver nuestro perfil