. Вся стилизация в файле style.css:Файл style.css для примера:
#box {
background: red;
height: 400px;
width: 400px;
margin-bottom: 1rem;
animation: rotateAndChangeColor 1000ms ease-in-out;
}
button {
font-size: larger;
background-color: white;
border: 1px solid black;
padding: 0.5em 1em;
color: black;
height: 80px;
width: 300px;
border-radius: 0.5em;
transition: background-color 100ms ease-in-out, color 100ms ease-in-out;
cursor: pointer;
}
button:hover {
background-color: black;
color: white;
}
@keyframes rotateAndChangeColor {
0% {
rotate: 0deg;
background: red;
}
10% {
background: green;
}
40% {
background: blue;
}
70% {
background: yellow;
}
100% {
rotate: 360deg;
background: red;
}
} Эти стили создают:
Красный блок, который вращается и меняет цвет при загрузке страницы (CSS @keyframes). Кнопку, которая меняет цвет фона при наведении (CSS transition).
Разница между keyframes и transition удобно исследовать через DevTools.
Как открыть вкладку Animations в Chrome DevTools Правый клик на странице → Inspect (Инспектировать). В DevTools нажмите на три точки в правом верхнем углу панели DevTools. Выберите More tools → Animations. Откроется выдвижная панель Animations внизу окна DevTools. Любые анимации или переходы, происходящие на странице, появятся в этой панели. Если обновить страницу и навести курсор на кнопку, вы увидите отдельные записи для keyframe‑анимации блока и для transition кнопки.
Интерфейс и элементы управления в Animations Когда вы кликаете по записи анимации, DevTools показывает временную шкалу и ключевые кадры анимации. Основные элементы управления:
Линейка времени с пикселями/процентами — позволяет визуализировать, где расположены ключевые кадры. Перетаскиваемая шкала скорости — ускоряет или замедляет воспроизведение (например, 0.25x, 0.1x). Кнопки Pause/Play — остановить и пошагово просмотреть анимацию. Ноды (пустые и заполненные) — пустые отмечают промежуточные ключевые кадры; заполненные указывают на начало/конец итерации. Отдельные дорожки для каждой анимируемой CSS‑свойства (например, left, background).
DevTools показывает все анимации, относящиеся к выбранному элементу. Для нашего блока видна только rotateAndChangeColor.
Вы можете:
Перетаскивать ползунок времени, чтобы «перемотать» анимацию. Поставить на паузу и посмотреть конкретную сцену. Отрегулировать скорость и увидеть, как анимация ведёт себя в замедленном режиме. Кликнуть отдельные CSS‑свойства, чтобы увидеть их промежуточные значения на конкретном кадре.
Это отличный способ диагностировать неожиданные значения цвета, положения или трансформации, которые иначе неочевидны.
Продвинутые примеры: steps() и множественные дорожки Замените содержимое тега
на:steps(4, end)
steps(4, start)
no steps
А файл style.css — на:
.move-me {
display: inline-block;
padding: 20px;
color: white;
position: relative;
margin: 0 0 10px 0;
}
.move-me-1 {
animation: move-in-steps 8s steps(4, end) infinite;
}
.move-me-2 {
animation: move-in-steps 8s steps(4, start) infinite;
}
.move-me-3 {
animation: move-in-steps 8s infinite;
}
body {
padding: 20px;
}
@keyframes move-in-steps {
0% {
left: 0;
background: blue;
}
100% {
left: 100%;
background: red;
}
} В этом примере все три элемента используют одну анимацию, но разная timing‑функция (steps) изменяет поведение:
.move-me-1: steps(4, end) — движение «рывками», шаги заканчиваются в ключевой позиции. .move-me-2: steps(4, start) — шаги начинаются сразу, отличие в фазе. .move-me-3: гладкая линейная анимация.
Если открыть вкладку Animations и обновить страницу, вы увидите дорожки для каждого элемента, где цвет и позиция анимируются одновременно. Узнать, где начинается и заканчивается каждая итерация, помогают ноды на линии анимации.
Пустые ноды — промежуточные ключевые кадры, заполненные — начало/конец итерации. Для бесконечных анимаций заполненные тёмные ноды показывают момент рестарта.
Практические приёмы и методика отладки Важно: начните с воспроизведения бага в DevTools. Без воспроизводимого шага дальнейшие правки будут хаотичными.
Мини‑методика (Inspect → Isolate → Edit → Persist):
Inspect — Найдите элемент и откройте Animations. Isolate — отключите соседние анимации или временно уберите стили, чтобы отделить проблемное поведение. Edit — используйте UI для изменения времени/ключевых кадров/функции времени и смотрите результаты в реальном времени. Persist — после успешной отладки перенесите изменения из inline‑стилей в ваш CSS/SCSS, оформите PR и добавьте тест. Модель мышления (heuristic) при отладке:
Разделяй и властвуй: проверяйте каждое свойство отдельно (transform, left, background и т. д.). Замедляйте: 0.1x‑скорость помогает увидеть «момент ошибки». Сравнивайте: откройте схожую анимацию на другом элементе или странице и сверяйте значения. Когда инспектор может не помочь (ограничения) JavaScript‑управляемые анимации (например, requestAnimationFrame с изменением стилей в рантайме) могут отображаться не так явно, как CSS‑анимации. DevTools показывает некоторые JS‑анимации, но для сложных случаев лучше логировать события или использовать Performance‑панель. SVG‑анимации и анимации, использующие Web Animations API, иногда требуют дополнительного внимания: их отображение зависит от способа создания анимации. Анимации, которые запускаются только при определённых взаимодействиях (например, drag/drop), могут быть трудно воспроизводимы без сценария. Альтернативы и доп. инструменты:
Firefox DevTools имеет собственный инспектор анимаций с похожими возможностями. Плагины и расширения для прототипирования (для дизайнеров) могут помочь при создании сложных переходов. Для программных анимаций используйте Performance профиль и запись кадров (Frames) чтобы понять нагрузку на главный поток. Чек‑листы для ролей Разработчик:
Дизайнер:
QA:
Критерии приёмки / Тест‑кейсы Анимация выполняется без визуальных прыжков на целевых браузерах. Длительность и easing совпадают с дизайном. Используются оптимальные CSS‑свойства (transform/opacity), а не layout‑изменяющие свойства. На слабых устройствах анимация не приводит к падению FPS и не блокирует основной поток (при необходимости отключается или упрощается). Пример теста: замедлите анимацию до 0.1x и убедитесь, что каждая фаза соответствует ожиданию; затем верните скорость и проверьте плавность.
Частые ошибки и как их избежать Ошибка: изменение left/top вместо transform. Исправление: используйте translateX/translateY для аппаратного ускорения. Ошибка: ожидание, что transition и @keyframes ведут себя одинаково. Примечание: transition — свойство‑ориентированное, keyframes даёт контроль над несколькими свойствами и кадрами. Ошибка: полагаться на порядок CSS без явных ключевых кадров — это приводит к неожиданным фазам при смене timing‑function. Важно: если нужна детальная производительность, дополнительно используйте вкладку Performance и запись кадров для анализа нагрузки на рендер.
Короткий глоссарий (1‑строчно) keyframes — набор ключевых состояний анимации, определённых в @keyframes. transition — плавный переход одного значения свойства в другое при изменении этого свойства. timing‑function — функция времени (easing), управляющая кривой изменения. steps() — дискретная timing‑function, разбивающая анимацию на шаги. nody (nodes) — визуальные точки на временной шкале DevTools, отмечающие ключевые кадры и повторения. Шаблон для быстрого исправления (cheat sheet) Откройте Animations → выберите анимацию. Замедлите до 0.1x и определите кадр с проблемой. Отключите соседние анимации (изолируйте элемент). Отредактируйте длительность/easing/ключевой кадр во встроенном UI. Скопируйте изменённые inline‑правки в исходный файл и закоммитьте. Итог DevTools даёт детальное представление о поведении CSS‑анимаций: от отдельных свойств до повторных итераций и точек рестарта. Используйте замедление, изоляцию и пошаговое редактирование, чтобы быстро диагностировать и исправлять баги. Наличие стандартизованного рабочего процесса и чек‑листов сокращает количество визуальных регрессий и делает анимации надёжнее.
Важно: не забывайте проверять производительность на целевых устройствах и выбирать оптимальные свойства для анимации.
Краткое резюме:
Откройте вкладку Animations в DevTools для визуального анализа. Замедление и пошаговый просмотр помогают поймать редкие баги. Steps(), ключевые кадры и переходы можно сравнивать и редактировать прямо в UI.