Guide · 01
Transizioni
Ogni componente accetta una transition: una curva di timing o una molla. Come scegliere, e che cosa succede quando un movimento viene interrotto.
Due tipi di transizione
Una transizione è { duration, easing } oppure { tempo: 'spring', spring }. Passala alla prop transition di qualsiasi componente. I componenti che muovono più cose insieme accettano una seconda prop, come layoutTransition su MotionList per gli elementi che scivolano nelle nuove posizioni.
// 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 }Molle con una durata
Una molla di solito dura quanto richiede la sua fisica. Aggiungi duration e la molla viene calibrata per assestarsi esattamente in quel momento, conservando il suo carattere (quanto rimbalza) e rispettando il tuo timing. Qui sotto puoi confrontare curve di timing e molle sugli stessi tre componenti.
Preparazione dell’esempio…
Interruzioni
Ogni componente avvia un nuovo movimento da ciò che è sullo schermo. Una molla conserva anche la velocità attuale, così un secondo clic inverte il movimento in modo fluido. Una curva di timing riparte dalla posizione attuale con una curva nuova.
- Numeri: un nuovo valore prosegue dai glifi sullo schermo.
- Altezza e scambi: la dimensione prosegue da quella sullo schermo.
- Liste: gli elementi che si spostano in una nuova posizione conservano la loro velocità.
Transizioni pronte
motionTokens raccoglie alcune sensazioni coerenti: quattro molle, quattro curve di timing e quattro durate. Sono oggetti semplici, quindi espandine uno per cambiare 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; // 140Nomi di easing
easing accetta linear, in, out, inOut, ease, easeIn, easeOut, easeInOut, expoOut, backOut, oppure un array di Bézier cubica come [0.22, 1, 0.36, 1].