Guías · 01
Transiciones
Cada componente recibe una transition: una curva de tiempo o un resorte. Cómo elegir y qué pasa cuando se interrumpe un movimiento.
Dos tipos de transición
Una transición es { duration, easing } o { tempo: 'spring', spring }. Pásala a la prop transition de cualquier componente. Los componentes que mueven varias cosas a la vez reciben una segunda prop, como layoutTransition en MotionList para los elementos que se deslizan a su nueva posición.
// Timing: a duration and a curve.
{ duration: 300, easing: 'easeOut' }
{ duration: 600, easing: [0.22, 1, 0.36, 1] }
// Spring: physics that keeps its speed when interrupted.
{ tempo: 'spring', spring: { stiffness: 260, damping: 12 } }
// Spring with duration: calibrated to settle exactly then.
{ tempo: 'spring', spring: { stiffness: 260, damping: 12 }, duration: 500 }Resortes con duración
Un resorte normalmente dura lo que necesite su física. Añade duration y el resorte se calibra para asentarse exactamente en ese momento, conservando su carácter (cuánto rebota) y ajustándose a tus tiempos. Compara curvas de tiempo y resortes sobre los mismos tres componentes de abajo.
Preparando el ejemplo…
Interrupciones
Cada componente empieza un nuevo movimiento desde lo que se ve en pantalla. Un resorte además conserva su velocidad actual, así que un segundo clic invierte el movimiento con suavidad. Una curva de tiempo vuelve a empezar desde la posición actual con una curva nueva.
- Números: un valor nuevo continúa desde los glifos que hay en pantalla.
- Altura y cambios: el tamaño continúa desde el tamaño en pantalla.
- Listas: los elementos que se mueven a una nueva posición conservan su velocidad.
Transiciones listas para usar
motionTokens reúne unas cuantas sensaciones coherentes: cuatro resortes, cuatro curvas de tiempo y cuatro duraciones. Son objetos normales, así que puedes expandir uno para cambiar un solo campo.
import { motionTokens } from '@kkwaenggwari/animated-chorus';
motionTokens.spring.quick; // snappy UI feedback
motionTokens.spring.basic; // the default feel
motionTokens.spring.gentle; // panels and height
motionTokens.spring.bouncy; // playful numbers
motionTokens.easing.expoOut; // { duration: 420, easing: 'expoOut' }
motionTokens.duration.fast; // 140Nombres de easing
easing acepta linear, in, out, inOut, ease, easeIn, easeOut, easeInOut, expoOut, backOut o un array de Bézier cúbica como [0.22, 1, 0.36, 1].