В основе работы Motion One лежит передача набора свойств в функцию
animate(), где каждое значение определяет характер
движения: длительность, кривую ускорения, трансформации и промежуточные
состояния. Подбор этих значений формирует визуальный стиль интерфейса и
определяет восприятие динамики.
Ключевые параметры:
duration — продолжительность анимацииeasing — кривая изменения скоростиtransform — смещения, масштабирование, вращениеopacity — управление прозрачностьюdelay и stagger — управление
последовательностьюПродолжительность анимации определяет ощущение «тяжести» или «легкости» интерфейса.
Слишком короткие интервалы создают ощущение резкости, слишком длинные — задержки отклика.
Кривая ускорения определяет физику движения элемента.
linear — технические или прогресс-индикаторыease-out — появление элементов (быстрый старт, плавное
завершение)ease-in — исчезновение (мягкое начало, ускорение
ухода)ease-in-out — симметричные переходыТиповые соответствия:
Подбор значений translate, scale и
rotate определяет выразительность движения.
Избыточные смещения создают эффект «прыжка», недостаточные — визуально незаметны.
Сильное отклонение от 1.0 используется для декоративных сцен, но не для интерфейса с высокой частотой взаимодействий.
Opacity часто комбинируется с трансформациями.
Типовые диапазоны:
Комбинация opacity с translateY или scale формирует более естественное восприятие, чем использование только одного свойства.
При групповых анимациях применяется задержка между элементами.
Типовые значения:
Малые значения воспринимаются как единое движение, большие — как каскадная структура.
Keyframes применяются для создания нелинейных состояний.
Пример логики подбора:
Overshoot (перелет значения) обычно не превышает 5–8% от конечного состояния, иначе возникает ощущение нестабильности.
Чрезмерная амплитуда трансформаций приводит к визуальному шуму, особенно при частых взаимодействиях. Минимальные смещения и умеренные кривые ускорения формируют стабильное восприятие интерфейса.
Сочетание небольших translate-значений с мягким ease-out и короткими длительностями формирует базовый стандарт интерфейсной анимации, на который накладываются более выразительные эффекты.
Использование свойств, работающих через compositor (transform и opacity), снижает нагрузку на рендеринг.
Типовые предпочтения:
Стабильные значения easing и duration также уменьшают визуальные рывки при низкой частоте кадров.
Пример структурирования анимации:
import { animate } from "motion";
animate(
".card",
{
opacity: [0, 1],
transform: ["translateY(24px) scale(0.95)", "translateY(0px) scale(1)"]
},
{
duration: 0.4,
easing: "ease-out",
delay: 0.05
}
);
Изменение одного параметра в пределах диапазона существенно влияет на восприятие:
Комбинация этих факторов формирует устойчивые паттерны движения, повторяющиеся в разных частях интерфейса без потери целостности визуального языка.