Посібники · 01
Переходи
Кожен компонент приймає один transition: криву timing чи пружину. Як обирати й що відбувається, коли рух переривають.
Два види переходів
Перехід — це або { duration, easing }, або { tempo: 'spring', spring }. Передайте його в проп transition будь-якого компонента. Компоненти, що рухають кілька речей одночасно, приймають другий проп, наприклад 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].