Посібники · 01

Переходи

Кожен компонент приймає один transition: криву timing чи пружину. Як обирати й що відбувається, коли рух переривають.

Два види переходів

Перехід — це або { duration, easing }, або { tempo: 'spring', spring }. Передайте його в проп transition будь-якого компонента. Компоненти, що рухають кілька речей одночасно, приймають другий проп, наприклад layoutTransition у MotionList для елементів, що переїжджають на нові місця.

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 }

Пружини з тривалістю

Зазвичай пружина триває стільки, скільки потребує її фізика. Додайте duration, і пружину буде відкалібровано так, щоб вона зупинилася саме тоді, зберігши характер (наскільки вона пружинить) і вклавшись у ваш таймінг. Нижче можна порівняти криві timing і пружини на тих самих трьох компонентах.

Підготовка прикладу…

Переривання

Кожен компонент починає новий рух із того, що на екрані. Пружина ще й зберігає поточну швидкість, тож друге натискання плавно розвертає рух. Крива timing починається знову з поточної позиції з новою кривою.

  • Числа: нове значення продовжується з гліфів на екрані.
  • Висота й заміни: розмір продовжується з розміру на екрані.
  • Списки: елементи, що переїжджають на нове місце, зберігають швидкість.

Готові переходи

motionTokens збирає кілька узгоджених відчуттів: чотири пружини, чотири криві timing і чотири тривалості. Це звичайні об’єкти, тож розгорніть один, щоб змінити одне поле.

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

Назви easing

easing приймає linear, in, out, inOut, ease, easeIn, easeOut, easeInOut, expoOut, backOut або масив кубічної кривої Безьє, наприклад [0.22, 1, 0.36, 1].

Пошук

Почніть вводити, щоб шукати в документації.