В системах анимации на базе Motion One кривые временной функции определяют то, как изменяется скорость значения во времени. Cubic Bézier используется как основной механизм задания easing-функций, позволяя точно контролировать ускорение и замедление анимации без необходимости писать собственные функции интерполяции.
Cubic Bézier-кривая задаётся четырьмя точками:
Функция описывает изменение прогресса анимации t во
времени через параметрическое уравнение:
B(t) = (1-t)^3 P_0 + 3(1-t)^2 t P_1 + 3(1-t)t^2 P_2 + t^3 P_3
В контексте easing-кривых используется не вся геометрия, а проекция X (время) → Y (прогресс). Именно поэтому cubic-bezier в анимациях — это функция преобразования временной оси в нелинейное изменение значения.
В Motion One cubic-bezier задаётся через массив из четырёх чисел:
import { animate } from "motion";
animate(
".box",
{ x: 300 },
{
easing: [0.25, 0.1, 0.25, 1]
}
);
Параметры:
x1 — первая контрольная точка по оси Xy1 — первая контрольная точка по оси Yx2 — вторая контрольная точка по оси Xy2 — вторая контрольная точка по оси YЭти значения определяют форму кривой, которая влияет на распределение скорости.
Контрольные точки не задают саму траекторию движения объекта. Они управляют тем, как быстро происходит прогресс анимации.
В Motion One часто используются предустановленные значения cubic-bezier:
easing: [0.25, 0.1, 0.25, 1]
Поведение: плавный старт и плавное завершение, универсальная кривая.
easing: [0.42, 0, 1, 1]
Поведение: медленный старт с постепенным ускорением.
easing: [0, 0, 0.58, 1]
Поведение: быстрое начало с плавным торможением.
easing: [0.42, 0, 0.58, 1]
Поведение: сочетание ускорения в начале и замедления в конце.
Cubic-bezier напрямую влияет на субъективное восприятие интерфейса:
В UI-анимациях Motion One позволяет точно балансировать между скоростью и мягкостью переходов.
Контрольные точки можно подбирать вручную:
animate(
".card",
{ opacity: 1, y: 0 },
{
easing: [0.2, 0.8, 0.2, 1]
}
);
Такой вариант создаёт эффект мягкого «всплытия», где движение сначала замедлено, затем ускоряется и снова замедляется.
easing: [0.12, 0, 0.39, 0]
Используется для мгновенных интерфейсных переключений.
easing: [0.34, 1.56, 0.64, 1]
Создаёт эффект инерции и «перелёта» конечной точки.
easing: [0, 0, 1, 1]
Используется в технических или синхронных анимациях без выразительности.
Cubic-bezier не изменяет длительность анимации, но перераспределяет её внутри временного интервала.
Если представить анимацию длительностью 1000ms:
Или наоборот — медленный старт с резким финалом.
В системах интерфейсной анимации Motion One cubic-bezier используется для:
animate(
".element",
{
scale: [0.8, 1.2, 1],
opacity: [0, 1]
},
{
duration: 800,
easing: [0.22, 1, 0.36, 1]
}
);
В таком случае easing влияет на всю последовательность keyframes, распределяя скорость между точками интерполяции.
Несмотря на гибкость, cubic-bezier имеет особенности:
В таких случаях используются физические модели анимации, но cubic-bezier остаётся стандартом для интерфейсных переходов благодаря предсказуемости и простоте настройки в Motion One