calcal.ru
Инструменты для Motion-дизайнеров и фронтенд-разработчиков

Калькулятор CSS-анимаций

Визуализируйте easing-функции, генерируйте @keyframes, рассчитывайте тайминг анимаций и создавайте motion-токены для дизайн-системы. Проверяйте CSS-единицы и cubic-bezier кривые прямо здесь.

16.67ms
Бюджет кадра (60fps)
Максимальное время на один кадр
6
Инструментов
Easing, keyframes, тайминг, спрайты, FPS, токены
10+
Easing-пресетов
Готовые функции плавности для CSS
CSS/JS
Форматы вывода
Копируйте код прямо в проект

Анимации в веб-разработке

CSS-анимации и переходы придают интерфейсу живость и помогают пользователю понять, что происходит на экране. Правильно подобранные тайминги и кривые плавности делают взаимодействие интуитивным, а ошибки в них приводят к ощущению «тормозов» и раздражению.

~

CSS Transitions

Простейший способ анимации: задайте свойство, длительность и функцию плавности (easing). Браузер автоматически интерполирует значения при изменении состояния (hover, focus, класс). Подходит для кнопок, карточек, меню.

@

CSS @keyframes

Мощный механизм для сложных анимаций: определите промежуточные состояния (кадры) в процентах от 0% до 100%. Поддерживает несколько свойств одновременно, повторение, направление и задержку. Для лоадеров, появлений, сложных переходов.

!

Web Animations API

JavaScript API для программного управления анимациями. Позволяет ставить на паузу, менять скорость, реверсировать и синхронизировать анимации в реальном времени. Используется в сложных интерактивных сценах и играх.

Применение анимаций в интерфейсах

Продуманные анимации улучшают UX, помогают навигации и делают интерфейс запоминающимся.

~

Микровзаимодействия

Hover-эффекты кнопок, переключатели, чекбоксы, анимация иконок. Мгновенная обратная связь пользователю через визуальное изменение элемента при взаимодействии.

@

Появление контента

Fade-in при скролле, slide-in карточек, stagger-анимации списков. Плавное появление элементов создаёт ощущение скорости загрузки и направляет внимание.

#

Навигация и переходы

Переходы между страницами (View Transitions API), анимация модальных окон, раскрытие аккордеонов. Сохранение контекста при смене экрана.

%

Загрузка и ожидание

Скелетоны, спиннеры, прогресс-бары, пульсирующие placeholder. Анимации загрузки снижают воспринимаемое время ожидания на 20-40%.

!

Геймификация

Спрайтовые анимации персонажей, эффекты частиц при достижениях, анимированные бейджи. Игровые элементы повышают вовлечённость пользователей.

*

Дизайн-системы

Унифицированные motion-токены обеспечивают согласованность анимаций во всём продукте. Единые длительности, easing и задержки для всей команды.

Производительность анимаций/ 60fps руководство

Каждый кадр при 60fps должен укладываться в 16.67ms. Анимация CSS-свойств запускает разные этапы рендеринга: Layout (пересчёт геометрии), Paint (перерисовка пикселей) или Composite (GPU-композиция). Чем «легче» этап, тем плавнее анимация.

Composite (GPU) — самый быстрый

Свойства transform и opacity обрабатываются на GPU без пересчёта layout и paint. Это самые дешёвые анимации.

/* Предпочитайте transform и opacity */
.element { transition: transform 300ms ease-out, opacity 300ms ease-out; }

Paint (перерисовка) — средний

Свойства background-color, box-shadow, color вызывают перерисовку пикселей, но не пересчёт геометрии. Используйте для несложных эффектов.

/* box-shadow лучше анимировать через псевдоэлемент + opacity */
.card::after { box-shadow: 0 8px 30px rgba(0,0,0,0.2); opacity: 0; transition: opacity 300ms; }

Layout (пересчёт) — самый дорогой

Свойства width, height, margin, padding, top/left запускают полный пересчёт layout всех элементов. Избегайте их анимации.

/* Вместо анимации width используйте transform: scaleX() */
.bar { transform-origin: left; transition: transform 300ms ease-out; }
.bar.full { transform: scaleX(1); }

will-change: подсказка браузеру о предстоящей анимации. Используйте will-change: transform перед анимацией, но убирайте после, чтобы не расходовать видеопамять.

contain: layout: ограничивает область пересчёта layout. Анимируемый элемент не будет влиять на соседние, что значительно снижает нагрузку.

Функции плавности (Easing)

Easing-функция определяет, как изменяется скорость анимации во времени. Правильный выбор easing делает движение естественным, а неправильный — механическим или раздражающим.

ease-out (замедление)

Элемент начинает движение быстро и постепенно замедляется. Идеален для входа элементов на экран: пользователь быстро видит начало анимации, а плавное замедление создаёт ощущение «мягкой посадки». Рекомендуется для большинства UI-анимаций.

ease-in (ускорение)

Элемент начинает медленно и набирает скорость. Применяется для выхода элементов с экрана: медленный старт даёт пользователю время заметить начало исчезновения, а быстрый финал не задерживает интерфейс.

ease-in-out (S-кривая)

Комбинация ускорения и замедления. Подходит для анимаций, где элемент остаётся на экране (перемещение, изменение размера). Создаёт ощущение плавного, «физичного» движения с разгоном и торможением.

cubic-bezier (кастомная)

Четыре числа (x1, y1, x2, y2) определяют форму кривой. Позволяет создавать эффекты «пружины» (overshoot), «упругости» (bounce) и любые нестандартные движения. Визуальный генератор помогает подобрать идеальную кривую.

Рекомендации по таймингу

Правильная длительность анимации зависит от контекста, расстояния перемещения и размера элемента.

1100-200ms: микровзаимодействия

Hover-эффекты, фокус-состояния, переключатели, чекбоксы. Короткие анимации воспринимаются мгновенно и не замедляют работу пользователя. Долгий hover раздражает при быстром перемещении мыши.

2200-400ms: стандартные переходы

Появление модальных окон, раскрытие меню, slide-in панелей. Золотая середина: достаточно быстро, чтобы не задерживать, и достаточно заметно, чтобы пользователь понял, что произошло.

3400-700ms: крупные анимации

Переходы между экранами, развёртывание карточек на весь экран, сложные трансформации. Чем больше расстояние перемещения, тем дольше должна быть анимация, чтобы глаз успел отследить движение.

4Stagger: 30-80ms между элементами

Каскадное появление списков и карточек. Задержка 50ms между элементами создаёт эффект «водопада». Слишком маленькая (менее 20ms) — незаметна, слишком большая (более 100ms) — затягивает загрузку.

Как пользоваться калькулятором

Шесть инструментов покрывают весь цикл работы с анимациями — от проектирования до оптимизации.

1

Подберите easing

Откройте вкладку Easing-функций. Выберите и сравните пресеты, настройте custom cubic-bezier. Скопируйте CSS-код подходящей кривой.

2

Создайте keyframes

Определите ключевые кадры с CSS-свойствами на нужных процентах. Генератор выдаст готовый @keyframes и animation shorthand.

3

Рассчитайте тайминг

Укажите расстояние и размер элемента. Получите рекомендованные длительности и stagger-задержки для списков.

4

Настройте спрайты

Задайте параметры спрайт-листа: кадры, FPS, размеры. Получите CSS для покадровой анимации с steps().

5

Проверьте бюджет

Выберите анимируемые свойства и количество элементов. Увидите, укладывается ли анимация в бюджет 60fps.

6

Экспортируйте токены

Сгенерируйте набор motion-токенов (длительности, easing, задержки) для CSS Custom Properties или JS.

Часто задаваемые вопросы

Easing-функция (функция плавности) определяет, как изменяется скорость анимации с течением времени. Без неё элемент движется равномерно (linear), что выглядит механически. Easing добавляет ускорение и замедление, делая движение более естественным и приятным для восприятия. В CSS это задаётся через transition-timing-function или animation-timing-function.
Зависит от трёх факторов: 1) Тип взаимодействия — hover и клик требуют 100-200ms, модальные окна 200-400ms, переходы между экранами 400-700ms. 2) Расстояние — чем дальше перемещается элемент, тем дольше должна быть анимация. 3) Размер элемента — маленькие элементы анимируются быстрее крупных. Наш калькулятор тайминга учитывает все эти параметры.
Jank возникает, когда браузер не успевает отрисовать кадр за 16.67ms (бюджет 60fps). Основные причины: 1) Анимация свойств, запускающих layout (width, height, margin) — используйте transform вместо них. 2) Слишком много анимируемых элементов. 3) Тяжёлые вычисления в JavaScript во время анимации. Наш бюджет производительности помогает оценить нагрузку заранее.
Самые производительные: transform (translate, scale, rotate) и opacity — они обрабатываются на GPU. Средние: background-color, color, box-shadow (paint, без layout). Избегайте: width, height, margin, padding, top, left, font-size — они запускают layout всего документа. Подробнее — во вкладке «Бюджет FPS».
Stagger — каскадное появление элементов списка с нарастающей задержкой. Первый элемент появляется сразу, второй — через 50ms, третий — через 100ms и т.д. Оптимальный интервал: 30-80ms. Слишком маленький (менее 20ms) — элементы сливаются, слишком большой (более 100ms) — анимация затягивается. В CSS реализуется через nth-child и transition-delay.
Motion-токены (design tokens для анимаций) обеспечивают согласованность: все кнопки анимируются с одинаковой длительностью, все модальные окна используют одну easing-функцию. Это снижает когнитивную нагрузку на пользователя и упрощает работу разработчиков — вместо подбора значений каждый раз, они используют готовые переменные из токенов.
Спрайтовая анимация использует один PNG/WebP файл со всеми кадрами. CSS steps() функция переключает background-position между кадрами без интерполяции. Задайте: 1) размер одного кадра (width, height), 2) background-size по размеру всего листа, 3) animation с steps(N), где N — количество кадров. Наш калькулятор генерирует весь CSS-код автоматически.
cubic-bezier(x1, y1, x2, y2) задаёт кривую Безье третьего порядка с двумя контрольными точками. Начальная точка (0,0) и конечная (1,1) фиксированы. x1,y1 и x2,y2 — координаты «ручек», которые формируют изгиб кривой. Ось X — время (0 = начало, 1 = конец), ось Y — прогресс анимации. Значения y за пределами 0-1 создают эффект overshoot (выход за границы).
1) Уменьшите количество кадров — часто 8-12 кадров достаточно вместо 24. 2) Уменьшите размер каждого кадра. 3) Используйте WebP вместо PNG — экономия до 50%. 4) Оптимизируйте через TinyPNG или Squoosh. 5) Для простых анимаций используйте CSS-анимации вместо спрайтов — они весят 0 байт.
Обязательно. Медиа-запрос @media (prefers-reduced-motion: reduce) отключает или минимизирует анимации для пользователей с вестибулярными расстройствами. Рекомендуется: заменять движение на fade, убирать parallax и бесконечные анимации, оставлять только функциональные переходы. Это требование WCAG 2.1 уровня AAA.

Похожие инструменты

Калькулятор движения снаряда (кинематика)

Моделирование траекторий с аэродинамическим сопротивлением, нелинейные колебания и анализ столкновений.

🧮

Калькулятор зарплаты (гросс/нет)

Зарплата на руки из оклада. НДФЛ 13%/15%/30%, страховые взносы, районные коэффициенты. Россия 2024-2025.

🏥

Калькулятор витаминов и минералов

Справочный калькулятор суточных норм витаминов (RDA) по полу и возрасту. Витамин D, C, железо и другие.

🧮

Калькулятор научного цитирования и библиографии

Генератор ссылок по ГОСТ Р 7.0.5-2008, APA, Chicago, MLA. Расчёт индекса Хирша, импакт-фактора журнала и РИНЦ-анализ для диссертаций (ВАК).

📐

Калькулятор ROC и AUC (точность, чувствительность)

Построение ROC-кривой, расчет AUC и метрик классификации (Accuracy, F1, Recall, Precision).

🏥

Стоматологический калькулятор: КПУ, OHI-S, CPI, анестезия и протезирование

Стоматологические расчёты онлайн: индекс КПУ (DMFT), гигиена OHI-S, пародонтальный CPI, доза анестетика, стоимость протезирования, IOTN.

🏥

Калькулятор вреда курения

Узнайте, сколько лет жизни и денег вы теряете из-за сигарет. Мотиватор для отказа от курения.

🏥

Калькулятор идеального веса

Рассчитайте идеальный вес по формулам Devine, Robinson, Miller и Hamwi. Сравнение результатов и диапазон здорового веса по ИМТ.

📐

Генератор случайных чисел

Рандомайзер чисел онлайн. Генерация случайных чисел в заданном диапазоне. Настройка количества и повторов.

⚙️

Калькулятор шумового загрязнения: сложение дБ, экран, звукоизоляция Rw

Расчёты шумового загрязнения: сложение источников (дБ), затухание с расстоянием, звукоизоляция Rw (СП 51), шумозащитный экран, LAeq.

🧮

Конвертер систем счисления (Bin/Oct/Dec/Hex)

Перевод чисел между двоичной, восьмеричной, десятичной и шестнадцатеричной системами. Для программистов.

📐

Калькулятор преобразования Фурье (DFT)

Дискретное преобразование Фурье онлайн. Спектральный анализ сигналов, построение спектра, оконные функции.

💰

Калькулятор Cap Table (размытие долей)

Калькулятор капитализации стартапа. Рассчитайте размытие долей основателей и инвесторов по раундам (Seed, Series A).

🏠

Калькулятор аквариумистики: объём, вес, нагреватель, солёность

Калькулятор для аквариума: расчет объема (литры/галлоны), веса воды, подбор мощности нагревателя и расчет соли для морского аквариума.

⚙️

Калькулятор композитных материалов

Расчёты композитов: правило смесей, ламинат, прочность Tsai-Hill, объём волокна, автоклав

Лиана Арифметова
Создатель

Лиана Арифметова

Миссия: Демократизировать сложные расчеты. Превратить страх перед числами в ясность и контроль. Девиз: «Любая повторяющаяся задача заслуживает своего калькулятора».

⚖️

Отказ от ответственности

Только для информационных целей. Все расчёты, результаты и данные, предоставляемые данным инструментом, носят исключительно ознакомительный и справочный характер. Они не являются профессиональной консультацией — медицинской, юридической, финансовой, инженерной или иной.

Точность результатов. Калькулятор основан на общепринятых формулах и методиках, однако фактические результаты могут отличаться в зависимости от индивидуальных условий, исходных данных и применяемых стандартов. Мы не гарантируем полноту, точность или актуальность приведённых расчётов.

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

Ограничение ответственности. Авторы и разработчики сервиса не несут никакой ответственности за прямой или косвенный ущерб, возникший в результате использования данных расчётов. Пользователь принимает на себя всю ответственность за интерпретацию и применение полученных результатов.