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.
// 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.
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; // 140Nomes 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].