Motion One интерпретирует входные значения анимации не только как «сырые» числа или строки CSS, но и как набор специальных ключевых слов, которые упрощают управление анимацией и расширяют выразительность API. При передаче значений движок сначала пытается распознать тип данных, а затем применяет преобразование в зависимости от контекста свойства.
Ключевой принцип — единый интерфейс для CSS-свойств, трансформаций и временных параметров, где строки могут быть как прямыми CSS-значениями, так и управляющими директивами.
Специальное значение auto используется для делегирования
вычисления браузеру или движку layout.
В Motion One auto применяется в нескольких
контекстах:
width, height)top, left)animate(element, {
height: "auto"
})
Особенность обработки заключается в том, что Motion One:
auto нельзя интерполировать напрямую, поэтому он всегда
преобразуется в числовую модель до начала анимации.
При описании анимации часто используется логика явного задания
стартового состояния через from. Это не CSS-свойство, а
директива уровня API.
animate(
element,
{ opacity: 1 },
{ from: { opacity: 0 } }
)
Особенности:
from имеет приоритет над текущим DOM-стилемЕсли значение отсутствует, Motion One извлекает его из computed styles.
Для управления повторением анимации используется значение
Infinity, которое задаёт бесконечное число итераций.
animate(element, {
rotate: 360
}, {
repeat: Infinity
})
Поведение:
Дополнительно может использоваться комбинация:
repeatdirection: "alternate"{
repeat: Infinity,
direction: "alternate"
}
Это создаёт возвратно-поступательное движение без резких скачков.
Параметр direction принимает строковые значения, которые
изменяют порядок воспроизведения ключевых кадров:
normalreversealternatealternate-reverseanimate(element, { x: 100 }, { direction: "alternate" })
Особенность обработки заключается в том, что Motion One не просто меняет порядок кадров, а перестраивает временную функцию интерполяции.
Easing в Motion One поддерживает как функции, так и строковые алиасы. Строковые значения интерпретируются через встроенную таблицу предустановок.
Часто используемые значения:
lineareaseease-inease-outease-in-outanimate(element, { opacity: 1 }, { easing: "ease-in-out" })
Внутренне такие значения преобразуются в cubic-bezier кривые.
Особенность:
Motion One поддерживает сокращённые ключи трансформаций, которые автоматически маппятся в CSS transform matrix:
x → translateXy → translateYscale → scale()rotate → rotate()skewX, skewYanimate(element, {
x: 100,
scale: 1.2,
rotate: 45
})
Специальные свойства:
Если одновременно используется transform, он имеет
приоритет над алиасами и может их переопределить.
Motion One напрямую поддерживает CSS custom properties:
animate(element, {
"--progress": 1
})
Особенности работы:
Пример интерполяции:
animate(element, {
"--blur": "20px"
}, {
from: { "--blur": "0px" }
})
CSS-функция calc() не интерпретируется Motion One как
математическое выражение. Вместо этого она передаётся напрямую в
браузер, если не требуется интерполяция.
animate(element, {
width: "calc(100% - 40px)"
})
Если участвует анимация, Motion One:
stagger используется для создания каскадных задержек при
анимации списков элементов.
import { stagger } from "motion"
animate(items, {
opacity: 1
}, {
delay: stagger(0.1)
})
Поведение:
stagger(0.1, { from: "center" })
Режимы from:
firstlastcenterСпециальное значение repeatDelay используется совместно
с повторениями:
{
repeat: Infinity,
repeatDelay: 0.5
}
Это создаёт паузу между циклами без вмешательства в сам keyframe-тайминг.
Особенность:
Ключевые кадры могут задаваться массивами, что является отдельным типом интерпретации:
animate(element, {
x: [0, 100, 50, 0]
})
Правила обработки:
Также допускается смешанный формат:
{
opacity: [0, 1]
}
Объект transition содержит собственный набор специальных значений:
durationdelayeaserepeattypeОсобое значение type:
{
type: "spring"
}
или
{
type: "tween"
}
При выборе spring активируется физическая модель
интерполяции, игнорирующая стандартный easing.
При использовании spring ключевые параметры становятся
управляющими значениями:
{
type: "spring",
stiffness: 200,
damping: 20
}
Если параметры не указаны, применяются предустановленные значения, зависящие от платформы.
Значение null используется для явного сброса или
исключения свойства из анимации.
animate(element, {
x: null
})
Поведение:
При одновременном использовании нескольких специальных ключевых слов происходит многоуровневая интерпретация:
from, stagger,
repeat)auto, Infinity,
calc)Конфликты разрешаются по приоритету:
Так формируется единая модель исполнения, в которой строковые ключевые слова превращаются в управляемую анимационную систему без необходимости ручной нормализации значений.