Генератор CSS-анимации

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

Предпросмотр

Анимация

Эффект

Параметры

Длительность600 мс
Задержка0 мс

Готовый код

—
Правило keyframes ставится один раз, свойство animation — на каждый анимируемый элемент.

Keyframes, длительность и кривая

Анимация в CSS собирается из двух частей. Правило keyframes описывает, что происходит на каждом проценте пути, а свойство animation говорит, сколько это длится, с какой задержкой, сколько раз повторяется и по какой кривой ускорения идёт. Инструмент собирает обе части сразу: и правило, и короткую запись.

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

Кривая ускорения важнее длительности. Линейная кривая читается механически, ease-out делает движение естественным: быстрый старт и мягкое торможение. Для интерфейсных переходов обычно берут 150–300 миллисекунд, дольше начинает раздражать, короче не успевает считаться глазом.

Праксиноскоп
Праксиноскоп Эмиля Рейно: анимация из последовательности рисунков, 1877 год. Фото: Gerarus, CC BY 4.0.
ПараметрЧто задаётРазумное значение
durationДлительность200–300 мс
timing-functionКривая ускоренияease-out
delayЗадержка старта0–100 мс
iteration-countЧисло повторов1 / infinite
fill-modeЧто остаётся послеforwards

От праксиноскопа до отказа от Flash

Принципы, по которым движение выглядит живым, сформулировали аниматоры студии Диснея в тридцатые: Олли Джонстон и Фрэнк Томас позже собрали их в двенадцать правил. Среди них разгон и торможение — то, что в CSS называется timing-function. Без них движение читается как механическое.

В вебе анимацию долго делали через JavaScript и таймеры, а до того через анимированные GIF и Flash. Flash держал интерактивную графику веба почти десять лет, пока в 2010 году Стив Джобс не опубликовал письмо об отказе от него на мобильных устройствах. После этого вся анимация переехала в CSS и JavaScript.

Свойство animation вместе с keyframes появилось в WebKit в 2007 году и вошло в спецификацию CSS Animations, которая получила статус рекомендации в 2023-м. Задержка между реальным использованием и формальным статусом — обычное дело для CSS: браузеры обгоняют комитет на годы. Позже появился Web Animations API, который даёт управлять теми же анимациями из JavaScript: ставить на паузу, перематывать и менять скорость на ходу.

Целлулоидные листы анимации
Классическая анимация: движение собиралось из отдельных фаз на прозрачных листах. Фото: Викисклад, общественное достояние.
Флипбук
Флипбук — та же покадровая анимация, только листается пальцем. Фото: Викисклад, CC0.

Что анимировать, чтобы не тормозило

Выберите эффект, задайте длительность и кривую и вставьте оба фрагмента кода: правило keyframes идёт отдельно, свойство animation — в стиль элемента. Значение forwards в fill-mode оставляет элемент в конечном состоянии, иначе он вернётся к исходному виду сразу после окончания.

Анимируйте transform и opacity — они не заставляют браузер пересчитывать раскладку, поэтому идут плавно даже на слабых устройствах. Анимация ширины, высоты или отступов вызывает пересчёт на каждом кадре и на длинных страницах заметно тормозит. И добавьте правило prefers-reduced-motion: часть людей отключает анимацию в системе, и это стоит уважать. Функции движения соберёт генератор transform. Ступенчатая кривая steps даёт покадровое движение: спрайтовая анимация из полоски кадров собирается одним правилом с шагом по числу кадров. Так делают мигающий курсор и старые пиксельные эффекты. Свойство animation-play-state ставит анимацию на паузу прямо из CSS: индикатор загрузки можно остановить по наведению курсора, не трогая скрипты.

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

Части записиkeyframes + animation
Интерфейсный переход150–300 мс
Естественная криваяease-out
Бесконечный повторinfinite
Остаться в концеfill-mode: forwards
Дешёвые свойстваtransform, opacity
Появление в WebKit2007
Уважать настройкуprefers-reduced-motion

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

Длительность, задержка, число повторов, направление и функция сглаживания настраиваются рядом, а предпросмотр перезапускается на каждое изменение, поэтому эффект видно сразу. Отдельно можно собрать свою кривую сглаживания через cubic-bezier и посмотреть, как она меняет характер движения.

  1. Появление, внимание, исчезновение или бесконечное движение. Предпросмотр запускается сразу.
  2. Длительность, задержку и число повторов. Для появления обычно хватает 300–500 мс.
  3. Готовые кривые или своя через cubic-bezier: она задаёт характер движения сильнее длительности.
  4. Под предпросмотром лежит и правило keyframes, и свойство animation.

Частые вопросы

Чем анимация отличается от перехода

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

Что можно анимировать без потери плавности

transform и opacity: браузер отдаёт их видеокарте и не пересчитывает разметку. Всё, что меняет размеры и положение в потоке — width, height, top, margin, — заставляет пересчитывать страницу на каждом кадре, и на телефоне это видно сразу. Поэтому сдвиг делают через translate; свойство left для этого не годится.

Что означает функция сглаживания

Она задаёт, как распределяется движение во времени. linear — равномерно, ease-out — быстро в начале и мягко к концу, ease-in — наоборот. Для появления берут ease-out: объект влетает и мягко тормозит. Для исчезновения ease-in: сначала медленно, потом быстро уходит.

Как читать cubic-bezier

Четыре числа — это координаты двух контрольных точек кривой: X отвечает за время, Y за прогресс. Значения Y за пределами от нуля до единицы дают отскок и перелёт: движение проскакивает конечную точку и возвращается. Именно так делают пружинку без библиотек.

Почему анимация дёргается на телефоне

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

Как быть с теми, кому анимация мешает

Уважать системную настройку. Медиазапрос prefers-reduced-motion сообщает, что человек просил уменьшить движение, и в этом случае анимацию либо отключают, либо заменяют простым проявлением. Для части людей резкое движение на экране вызывает тошноту и головокружение, это не вопрос вкуса.

Спросите нейросети об инструменте

Отвечает DeepSeek по данным этой страницы и тому, что у вас сейчас на экране: что делает, как устроен, ограничения

Больше возможностей: Нейросеть для кода, написать, найти ошибку, объяснить.

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

Генератор CSS transform

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

Открыть
Генератор text-shadow

Тень текста со слоями и готовыми эффектами: обводка, неон, объём, гравировка. Предпросмотр на своём фоне и шрифте.

Открыть
Генератор Flexbox

Визуальный конструктор flex-раскладки: направление, перенос, выравнивание по обеим осям. Отдельно настраиваются grow, shrink, basis и order каждого элемента.

Открыть
Генератор clip-path

Обрезка блока по фигуре: многоугольник с перетаскиванием точек, круг, эллипс и рамка. Скосы, шестиугольники и звёзды из пресетов.

Открыть
Генератор CSS filter

Размытие, яркость, контраст, насыщенность, оттенок, сепия и тень по контуру. Предпросмотр на своей картинке, файл остаётся в браузере.

Открыть
Калькулятор CSS clamp()

Адаптивный размер по двум точкам без медиазапросов. С графиком роста и проверкой требования доступности о масштабировании.

Открыть

Ещё генераторы

Пароли и тестовые данные, CSS-градиенты, тени и скругления, clip-path и фильтры, анимации, Flexbox и Grid — в разделе 39 генераторов.