Guias · 01

Transições

Todo componente recebe uma transition: uma curva de tempo ou uma mola. Como escolher e o que acontece quando um movimento é interrompido.

Dois tipos de transição

Uma transição é { duration, easing } ou { tempo: 'spring', spring }. Passe para a prop transition de qualquer componente. Componentes que movem várias coisas ao mesmo tempo recebem uma segunda prop, como layoutTransition no MotionList para itens que deslizam até novas posições.

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 }

Molas com duração

Normalmente uma mola dura o quanto a física dela precisa. Adicione duration e a mola é calibrada para se acomodar exatamente nesse momento, mantendo o caráter (quanto ela quica) e respeitando o seu tempo. Compare curvas de tempo e molas nos mesmos três componentes abaixo.

Preparando o exemplo…

Interrupções

Todo componente começa um movimento novo do que está na tela. Uma mola também mantém a velocidade atual, então um segundo clique inverte o movimento com suavidade. Uma curva de tempo recomeça da posição atual com uma curva nova.

  • Números: um valor novo continua dos glifos na tela.
  • Altura e trocas: o tamanho continua do tamanho na tela.
  • Listas: itens indo para uma posição nova mantêm a velocidade.

Transições prontas

motionTokens reúne algumas sensações consistentes: quatro molas, quatro curvas de tempo e quatro durações. São objetos simples, então dá para espalhar um e mudar um único campo.

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

Nomes de easing

easing aceita linear, in, out, inOut, ease, easeIn, easeOut, easeInOut, expoOut, backOut ou um array de Bézier cúbica como [0.22, 1, 0.36, 1].

Pesquisar

Digite para pesquisar na documentação.