Product Craft Bible
Motion design system
Inicio Design Systems Motion design system
Design Systems

Motion design system

8 reglas IBM Carbon Motion v10 · Material Design 3 design tokensIBM Carbon Motion v10 · Material Design 3 easing tokensApple HIG (Motion) · IBM Carbon Motion v10MDN prefers-reduced-motion · Apple HIG (Motion)
21

Motion design system

8 reglas
221

Define una escala de tokens de duración y usala en vez de valores ad-hoc

Un sistema de motion necesita tokens de duración nombrados, no milisegundos arbitrarios dispersos por el código. Sin escala, cada quien inventa tiempos, el producto se vuelve inconsistente y ajustar el ritmo global exige tocar decenas de archivos. Los tokens funcionan como una escala tipografica: comunican jerarquía de tiempo y se editan desde un solo lugar. IBM Carbon define 6 niveles (70, 110, 150, 240, 400, 700ms) y Material 3 define 8 (50 a 800ms).

IBM Carbon Motion v10 · Material Design 3 design tokens
Preferir
fast-0170ms
fast-02110ms
moderate-01150ms
moderate-02240ms
slow-01400ms
slow-02700ms
Evitar
transition: all 350ms
transition: opacity 0.6s
transition: transform 0.2s
222

Elige la curva de easing según si el elemento entra, sale o cambia de estado

La curva de aceleración decide si el movimiento se siente físico o artificial: los objetos reales no arrancan ni frenan de golpe. Usar la curva equivocada rompe la ilusión de continuidad aunque la duración sea perfecta. Un elemento que entra debe decelerar al llegar (Entrance), uno que sale debe acelerar al irse (Exit), y un cambio de estado usa una curva simetrica (Standard). Un modal con ease-in parece escaparse; con una curva de entrada aterriza con naturalidad.

IBM Carbon Motion v10 · Material Design 3 easing tokens
Preferir
Entrance · decelera al llegar cubic-bezier(0, 0, 0.38, 0.9) · aterriza
Evitar
Entra con ease-in cubic-bezier(0.42, 0, 1, 1) · se escapa
223

El movimiento debe orientar o dar feedback, nunca decorar por decorar

Cada animación en la UI debe cumplir al menos una función: orientar al usuario en el espacio (de donde vino este elemento), confirmar una acción (mi click funciono) o comunicar jerarquía (que es lo principal). El movimiento decorativo que no responde a ninguna de estas preguntas anade carga cognitiva y distrae sin retribuir. Apple HIG lo resume: el movimiento debe servir siempre a un proposito claro, nunca usarse de forma gratuita. Una tarjeta que rota 360 al hover es espectacular pero inútil; un item que se desliza al ser anadido comunica que acaba de llegar.

Apple HIG (Motion) · IBM Carbon Motion v10
Preferir
Tarea anterior
Tarea recien anadida
Tarea de ayer
Evitar
rota al hover
224

Respeta siempre prefers-reduced-motion, ofrece alternativa, no silencio

Desactivar la animación sin más equivale a romper la experiencia para usuarios con trastornos vestibulares, epilepsia fotosensible o TDAH. La directriz correcta es sustituir el movimiento por un cambio equivalente, un fade de opacidad o un cambio de color, que comunique lo mismo sin generar malestar. MDN recomienda explicitamente reemplazar (scale/zoom a fade, paneo a fade, transforms complejos a cambios de estado simples) en vez de usar animation: none. La media query prefers-reduced-motion tiene soporte Baseline amplio desde enero 2020.

MDN prefers-reduced-motion · Apple HIG (Motion)
Preferir
/* sustituye transform por fade */
.card {
  transition: transform 300ms var(--ease-entrance),
              opacity 300ms var(--ease-standard);
}
@media (prefers-reduced-motion: reduce) {
  .card {
    transition: opacity 200ms linear;
    transform: none;
  }
}
Evitar
/* corta el movimiento sin alternativa */
@media (prefers-reduced-motion: reduce) {
  .card { transition: none; }
}
225

WCAG 2.3.3: toda animación no esencial debe poder desactivarse

El criterio de exito WCAG 2.3.3 (nivel AAA) exige que cualquier animación disparada por interacción del usuario pueda desactivarse, salvo que sea esencial para la funcionalidad o la información. Parallax, transiciones decorativas y elementos en movimiento continuo necesitan una vía de escape. Hay tres métodos aceptados: evitar animaciones innecesarias desde el diseño, ofrecer un control en la UI para apagarlas, o respetar prefers-reduced-motion del sistema operativo. Quedan exentas las herramientas de autoria de animación y el scroll básico de contenido que entra al viewport.

W3C WCAG 2.2 SC 2.3.3 (Animation from Interactions, AAA)
Preferir
Hero del sitio Reducir movimiento
Evitar
Parallax sin control ni respeto a prefers-reduced-motion
226

WCAG 2.2.2: contenido en movimiento automático de más de 5 segundos necesita pausa

Cualquier elemento que empiece a moverse sin que el usuario lo pida, dure más de cinco segundos y coexista con otro contenido en pantalla necesita un control de pausa, detención u ocultamiento. Ignorarlo viola un criterio de nivel A, el más básico, y es un bloqueador de accesibilidad real. El límite de 5 segundos se eligio porque es suficiente para captar la atención pero no tanto que impida usar la página. No aplica cuando el movimiento es el único contenido en pantalla. Un carrusel autoplay sin botón de pausa deja texto sin leer y distrae sin parar.

W3C WCAG 2.2 SC 2.2.2 (Pause, Stop, Hide, A)
Preferir
"Esta herramienta cambio nuestro flujo de trabajo por completo."
Pausar
Evitar
"Esta herramienta cambio nuestro flujo de trabajo por completo."
autoplay infinito, sin pausa
227

No animes propiedades que causan mareo: parallax agresivo y zoom excesivo

Ciertos tipos de movimiento provocan nauseas, desorientación y malestar en usuarios con sensibilidad vestibular, incluso sin diagnostico previo. El zoom excesivo crea la ilusión de acercamiento físico y el parallax con diferencial de velocidad alto produce una disociación visual que el cerebro intenta compensar como movimiento real. MDN lista explicitamente los movimientos a evitar: escalado de objetos, paneo de contenido grande y efectos parallax. La alternativa es discreta: un hover con translateY(-2px) más sombra basta para sentir interactividad sin malestar.

MDN prefers-reduced-motion · W3C WCAG 2.2 SC 2.3.3
Preferir
translateY(-2px) + sombra
Evitar
zoom 118% en hover
228

Anima siempre transform y opacity, nunca propiedades de layout

El navegador ejecuta el render en tres etapas: Layout, Paint y Composite. Animar width, height, top, margin o padding obliga a recalcular Layout en cada frame, la etapa más cara, que invalida el arbol completo y genera jank. Animar transform y opacity va directo a Composite en la GPU, sin tocar Layout ni Paint, y corre a 60fps incluso en dispositivos lentos. Son las únicas dos propiedades que el compositor puede animar sin bloquear el main thread. Carbon recomienda que la mayoría de animaciones duren entre 100 y 300ms.

MDN (rendering pipeline) · IBM Carbon Motion v10
Preferir
animation: transform 300ms · solo Composite, 60fps
translateX
Evitar
animation: width 300ms · recalcula Layout cada frame
width