Animation
Типы токенов группы Animation: Duration, Cubic Bezier, Transition — выверенные форматы значений и практические motion-паттерны.
Overview
Motion-токены. Все три — внутренние (хранят данные анимации для Apply / Generate / Code; не экспортируются как отдельная переменная или стиль).
Figma поддерживает переменные Timing и Easing в интерфейсе Motion. Однако публичный Figma Plugin API сейчас предоставляет только типы BOOLEAN, COLOR, FLOAT и STRING, поэтому Community-плагин не может создать нативные Timing- или Easing-переменные. SXL сохраняет эти motion-значения в JSON и не подменяет их вводящими в заблуждение FLOAT или STRING. Нативный экспорт можно будет добавить, когда Figma откроет эти типы в публичном API.
$type | Значение одной строкой |
|---|---|
duration | Время (ms / s / число) |
cubicBezier | Массив [x1, y1, x2, y2] или cubic-bezier(...) |
transition | Shorthand-строка или объект (duration, delay, easing) |
Duration
Значение времени, используемое переходами и анимацией.
Принимаемое $value | Пример |
|---|---|
| Миллисекунды | "200ms" |
| Секунды | "0.2s" |
| Число | 200 |
| Алиас / математика | "{duration.base} * 2" |
{ "duration": { "$type": "duration", "fast": { "$value": "120ms" }, "base": { "$value": "200ms" }, "slow": { "$value": "320ms" } } }
Cubic Bezier
Easing-кривая.
Принимаемое $value | Пример |
|---|---|
| Массив из 4 чисел | [0.4, 0, 0.2, 1] |
| Строковый массив | "[0.4, 0, 0.2, 1]" |
cubic-bezier(...) | "cubic-bezier(0.2, 0, 0, 1)" |
| Алиас | "{cubicBezier.standard}" |
{ "cubicBezier": { "$type": "cubicBezier", "standard": { "$value": [0.4, 0, 0.2, 1] }, "emphasized": { "$value": [0.2, 0, 0, 1] } } }
Transition
Композитный motion-контракт. Пишите shorthand-строку, объект или алиас (массивы недопустимы как корень).
Ключи объекта:
| Ключ | Тип | Примечания |
|---|---|---|
duration | число / строка / алиас | Длительность |
delay | число / строка / алиас | Задержка старта |
easing | строка / алиас | Пресет-ключевое слово, cubic-bezier(...) или spring(...) |
Пресеты easing: linear, ease-in, ease-out, ease-in-out, ease-in-back, ease-out-back, ease-in-out-back, gentle, quick, bouncy, slow (плюс cubic-bezier(...) и spring(...)).
{
"transition": {
"$type": "transition",
"default": { "$value": { "duration": "200ms", "delay": "0ms", "easing": "ease-in-out" } },
"emphasized": { "$value": { "duration": "{duration.slow}", "delay": "0ms", "easing": "cubic-bezier(0.2, 0, 0, 1)" } },
"spring": { "$value": { "duration": "260ms", "delay": "0ms", "easing": "spring(1, 170, 26, 0)" } }
}
}
Примечание Это transition-токен (переиспользуемый motion-контракт). Прототип-взаимодействия внутри компонента (триггеры вроде on-hover, анимации вроде smart-animate) настраиваются в файле composition — см. Composition · Transitions.
Полный пример
{
"duration": { "$type": "duration", "base": { "$value": "200ms" }, "slow": { "$value": "320ms" } },
"cubicBezier": { "$type": "cubicBezier", "standard": { "$value": [0.4, 0, 0.2, 1] } },
"transition": {
"$type": "transition",
"default": { "$value": { "duration": "{duration.base}", "easing": "ease-in-out" } }
}
}