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

Далее

Писать @keyframes с нуля утомительно: выбираешь проценты, угадываешь свойства, перезагружаешь, смотришь, правишь. Этот генератор даёт шесть готовых анимаций (затухание, выезд вверх, отскок, вращение, пульсация и тряска) и позволяет задать имя анимации, длительность, easing, число повторов и направление. Результат воспроизводится в реальном времени, и когда он вас устраивает, вы можете скопировать сгенерированный блок @keyframes и сокращённое свойство animation.

Как создать CSS-анимацию

  1. 1

    Выберите пресет

    Выберите одну из шести встроенных анимаций: затухание, выезд вверх, отскок, вращение, пульсация или тряска.

  2. 2

    Назовите анимацию

    Дайте keyframes допустимый CSS-идентификатор, например `cardIn` или `fadeIn`. Это же имя используется в сокращённом свойстве `animation`.

  3. 3

    Задайте тайминг и повтор

    Длительность в секундах, easing (ease, ease-in, ease-out, ease-in-out, linear или spring), число повторов (1, 2, 3 или infinite) и направление (normal, reverse, alternate или alternate-reverse).

  4. 4

    Скопируйте CSS

    Сгенерированное правило `@keyframes` и сокращённая запись `animation:` готовы к вставке в вашу таблицу стилей.

Анатомия анимации

@keyframes slide-in {
  0%   { transform: translateX(-100%); opacity: 0; }
  60%  { transform: translateX(10%);   opacity: 1; }
  100% { transform: translateX(0);     opacity: 1; }
}

.card {
  animation: slide-in 400ms cubic-bezier(0.22, 1, 0.36, 1) both;
}

Восемь свойств в сокращённой записи: animation-name duration timing-function delay iteration-count direction fill-mode play-state.

Выбор easing

Генератор предлагает шесть функций easing:

Easing cubic-bezier() Ощущение
linear нет Постоянная скорость
ease-in 0.42, 0, 1, 1 Медленный старт, быстрый конец
ease-out 0, 0, 0.58, 1 Быстрый старт, медленный конец
ease-in-out 0.42, 0, 0.58, 1 Медленно-быстро-медленно
ease (по умолч.) 0.25, 0.1, 0.25, 1 Мягкое по умолчанию
spring 0.68, -0.55, 0.27, 1.55 Перелёт и стабилизация

Анимируйте правильные свойства

Браузер может анимировать любое свойство, но лишь немногие плавно идут на GPU, не вызывая пересчёт layout или перерисовку:

Дешёвые (только композиция): transform, opacity, filter.

Дорогие (layout/перерисовка): width, height, top, left, margin, padding, background-color.

Анимации с шестьюдесятью кадрами в секунду на width и top возможны на маленьких элементах, но на телефоне они захлебнутся, если анимировать много элементов сразу. Для сложного движения всегда предпочитайте transform: translate(...) вместо top / left и transform: scale(...) вместо анимированных ширины/высоты.

will-change: используйте экономно

Подсказка браузеру заранее выделить слой композиции может улучшить плавность:

.card { will-change: transform; }

Но это потребляет память. Применяйте её непосредственно перед запуском анимации и убирайте после завершения. Постоянное will-change: transform на многих элементах может принести больше вреда, чем пользы.

Уменьшение движения

Некоторые пользователи чувствительны к движению и задают системные настройки:

@media (prefers-reduced-motion: reduce) {
  .card {
    animation: none;
  }
}

Уважайте эту настройку. Предложите мгновенное изменение состояния или очень лёгкое затухание как замену.

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

CSS для простого декларативного разового движения. Web Animations API (element.animate()) для управления таймингом из JavaScript, динамических keyframes, паузы и контроля воспроизведения. Оба работают на композиторе; ни один не быстрее по своей природе.

Почти всегда потому, что вы анимируете свойство, вызывающее пересчёт layout (width, top, margin), вместо transform. Перейдите на translate() и scale(), и рывки обычно исчезают.

Да, animation: a 1s, b 1s 1s, c 1s 2s; запускает три анимации последовательно за счёт сдвинутых задержек. Этот генератор выдаёт одну анимацию, поэтому дополнительные записи добавьте в сокращённую запись сами. Для более сложной хореографии используйте Web Animations API или библиотеку вроде GSAP.

Элемент принимает состояние from до начала анимации (во время задержки) и сохраняет состояние to после её окончания. Без both по завершении элемент возвращается к своему прежнему стилю. Генератор держит запись минимальной, поэтому при необходимости добавьте fill mode сами.

Сопутствующие инструменты

Справочная таблица ASCII

Полная таблица ASCII от 0 до 127 с десятичным, шестнадцатеричным, восьмеричным и двоичным представлением, а также записью числовых ссылок HTML, включая NUL, LF и DEL.

Справочник сочетаний клавиш

Ищите документированные сочетания по умолчанию для VS Code, Chrome и Bash с GNU Readline в macOS, Windows и Linux.

Справочник символов HTML

Справочник HTML-сущностей с поиском, их именованными и числовыми кодами, а также копированием специальных символов и знаков одним кликом.

Счетчик FPS

Измерьте FPS браузера через requestAnimationFrame: сглаживание, минимальная и максимальная частота кадров, порог предупреждения и график по желанию. Работает локально, без загрузок и API.

Генератор цветовой палитры

Создавайте монохромные, аналоговые, комплементарные, триадные или тетрадные палитры из базового HEX-цвета и экспортируйте готовые CSS-переменные.

Генератор случайных букв

Генерируйте случайные буквы A-Z. Выберите количество, верхний или нижний регистр либо смешанный вариант для игр, заданий и уроков.