Guides · 01
Transitions
Chaque composant prend une transition : une courbe de temps ou un ressort. Comment choisir, et ce qui se passe quand un mouvement est interrompu.
Deux types de transition
Une transition est soit { duration, easing }, soit { tempo: 'spring', spring }. Passez-la à la prop transition de n’importe quel composant. Les composants qui déplacent plusieurs choses à la fois prennent une seconde prop, comme layoutTransition sur MotionList pour les éléments qui glissent vers leur nouvelle position.
// 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 }Des ressorts avec une durée
Un ressort dure normalement le temps qu’exige sa physique. Ajoutez duration et il est calibré pour se poser exactement à ce moment-là, en gardant son caractère (son rebond) tout en respectant votre timing. Comparez courbes de temps et ressorts sur les trois mêmes composants ci-dessous.
Préparation de l’exemple…
Interruptions
Chaque composant démarre un nouveau mouvement depuis ce qui est à l’écran. Un ressort conserve aussi sa vitesse actuelle : un second clic inverse le mouvement en douceur. Une courbe de temps repart de la position actuelle avec une nouvelle courbe.
- Nombres : une nouvelle valeur repart des glyphes à l’écran.
- Hauteur et changements : la taille repart de la taille à l’écran.
- Listes : les éléments qui rejoignent une nouvelle position gardent leur vitesse.
Transitions prêtes à l’emploi
motionTokens réunit quelques sensations cohérentes : quatre ressorts, quatre courbes de temps et quatre durées. Ce sont de simples objets : décomposez-en un pour changer un seul champ.
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; // 140Noms d’easing
easing accepte linear, in, out, inOut, ease, easeIn, easeOut, easeInOut, expoOut, backOut, ou un tableau de Bézier cubique comme [0.22, 1, 0.36, 1].