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.

transitions.js
// 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.

tokens.js
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; // 140

Noms 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].

Rechercher

Tapez pour rechercher dans la documentation.