Как договориться об анимации: простая система передачи микровзаимодействий между дизайнером и разработчиком

Я — Алексей, младший фронтенд‑разработчик в небольшой цифровой студии в Сочи. Мы делаем лендинги для местных кафе, туроператоров и стартапов: дизайн красивый, макеты в Figma впечатляют, и в каждом проекте есть то самое “движение”, которое дизайнер называет «фишкой». Но на практике это движение часто становится причиной задержек: стили противоречат анимации, тайминги не совпадают, поведение в мобильной версии неожиданно ломается. В одном проекте мы не могли воспроизвести честный «hover эффект» из макета — оказалось, дизайнер думал о плавности 280 мс с кривой EaseOutBack, а верстальщик поставил 150 мс linear и удалил повторную анимацию.

Этот текст — о том, как в несколько простых шагов и с минимальными инструментами договориться об анимациях и микровзаимодействиях так, чтобы дизайнер, верстальщик и клиент говорили на одном языке. Я покажу систему документов и практик, которые можно использовать уже на следующем проекте, даже если вы — новичок.

— Почему мелкие анимации тормозят проект и как этого избежать
— Что должно быть в «карте микровзаимодействий»: минимальный набор артефактов
— Как быстро создать и согласовать прототип анимации без лишних инструментов
— Практические паттерны передачи: CSS‑токены, JSON‑описания и чек‑лист при PR
— Три шаблона микровзаимодействий с кодом и рекомендациями по доступности

Почему мелкие анимации тормозят проект и как этого избежать

Анимация — это не просто украшение, это поведение интерфейса. Но именно поведение чаще всего не описано формально. Дизайнер рисует кадры, иногда добавляет prototyping в Figma, но не прописывает критерий готовности: какие события запускают анимацию, как она отменяется, что происходит при быстром переключении состояний. Результат — неопределённость: девопс верстает «как кажется правильно», дизайнер удивлён, клиент недоволен.

Чтобы избежать этого, достаточно формализовать три вещи для каждой анимации:
1. Триггер — каким действием запускается (hover, click, focus, scroll, load).
2. Критерий завершения — когда анимация считается законченной (таймер, end event).
3. Поведение при прерывании — что происходит, если пользователь повторно инициирует анимацию или