Ръководства · 01
Преходи
Всеки компонент приема един transition: крива на timing или пружина. Как да изберете и какво става, когато движение бъде прекъснато.
Два вида преходи
Преходът е или { duration, easing }, или { tempo: 'spring', spring }. Подайте го на prop transition на който и да е компонент. Компонентите, които движат няколко неща наведнъж, приемат втори prop, например layoutTransition при MotionList за елементи, плъзгащи се към нови позиции.
// 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 }Пружини с продължителност
Пружината обикновено трае толкова, колкото изисква физиката ѝ. Добавете duration и пружината се калибрира да спре точно тогава, като запазва характера си (колко подскача) и се вписва във вашия тайминг. Сравнете кривите на timing и пружините на същите три компонента по-долу.
Подготовка на примера…
Прекъсвания
Всеки компонент започва ново движение от това, което е на екрана. Пружината запазва и текущата си скорост, така че второ кликване плавно обръща движението. Кривата на timing започва отново от текущата позиция с нова крива.
- Числа: новата стойност продължава от глифовете на екрана.
- Височина и смени: размерът продължава от размера на екрана.
- Списъци: елементите, които отиват на нова позиция, запазват скоростта си.
Готови преходи
motionTokens събира няколко съгласувани усещания: четири пружини, четири криви на timing и четири продължителности. Това са обикновени обекти, така че разгънете един, за да смените едно поле.
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Имена на easing
easing приема linear, in, out, inOut, ease, easeIn, easeOut, easeInOut, expoOut, backOut или масив на кубична крива на Безие, например [0.22, 1, 0.36, 1].