Генератор CSS-анимации
Писать @keyframes с нуля утомительно: выбираешь проценты, угадываешь свойства, перезагружаешь, смотришь, правишь. Этот генератор даёт шесть готовых анимаций (затухание, выезд вверх, отскок, вращение, пульсация и тряска) и позволяет задать имя анимации, длительность, easing, число повторов и направление. Результат воспроизводится в реальном времени, и когда он вас устраивает, вы можете скопировать сгенерированный блок @keyframes и сокращённое свойство animation.
Как создать CSS-анимацию
-
1
Выберите пресет
Выберите одну из шести встроенных анимаций: затухание, выезд вверх, отскок, вращение, пульсация или тряска.
-
2
Назовите анимацию
Дайте keyframes допустимый CSS-идентификатор, например `cardIn` или `fadeIn`. Это же имя используется в сокращённом свойстве `animation`.
-
3
Задайте тайминг и повтор
Длительность в секундах, easing (ease, ease-in, ease-out, ease-in-out, linear или spring), число повторов (1, 2, 3 или infinite) и направление (normal, reverse, alternate или alternate-reverse).
-
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 сами.
Сопутствующие инструменты
Смешивание цветов
Смешайте два HEX-цвета в 2-20 равномерных образцов. Каждый промежуточный цвет показывается как HEX-код в верхнем регистре, включая оба края.
Счетчик FPS
Измерьте FPS браузера через requestAnimationFrame: сглаживание, минимальная и максимальная частота кадров, порог предупреждения и график по желанию. Работает локально, без загрузок и API.
Генератор случайных букв
Генерируйте случайные буквы A-Z. Выберите количество, верхний или нижний регистр либо смешанный вариант для игр, заданий и уроков.
Генератор бейджей README
Создавайте бейджи shields.io для файлов README на GitHub: статус сборки, версия, лицензия, число загрузок и покрытие кода. Просмотрите и скопируйте фрагмент Markdown.
Конвертер из формата HEX в ASCII
Преобразует последовательности шестнадцатеричных байтов в текст в формате ASCII. Отлично подходит для отладки протоколов, обратного инженеринга и решений задач типа CTF.
Генератор случайных адресов
Создавайте 1–20 похожих на адрес записей для макетов и тестов в трёх упрощённых форматах.
Инструмент доступен на других языках
- Trình tạo animation CSS [VI]
- CSS-animationsgenerator [SV]
- مولّد CSS Animation [AR]
- CSS 애니메이션 생성기 [KO]
- ตัวสร้าง CSS Animation [TH]
- Générateur d'animation CSS [FR]
- Generator Animasi CSS [ID]
- CSSアニメーション生成ツール [JA]
- CSS-Animationsgenerator [DE]
- CSS-animatiegenerator [NL]
- Generador de Animaciones CSS [ES]
- Generator animacji CSS [PL]
- Gerador de Animação CSS [PT]
- CSS Animation Generator [EN]
- Generatore di animazioni CSS [IT]
- CSS Animasyon Oluşturucu [TR]
- CSS 动画生成器 [ZH]