Перейти к основному содержимому

CSS-анимации

Чтобы перемещать элемент или менять его стиль со временем, JavaScript не нужен: CSS сам умеет анимировать HTML-элементы.


Что такое CSS-анимации?

С помощью анимации элемент постепенно переходит от одного стиля к другому, причём ни количество задействованных свойств CSS, ни количество изменений не ограничено.

Сначала идут ключевые кадры: они описывают стили, которые элемент должен иметь в определённые моменты, и CSS-анимация не может запуститься, пока их нет.


CSS animation-name и animation-duration

Чтобы запустить анимацию, нужны два свойства. animation-name задаёт ей имя, а animation-duration указывает, сколько длится один прогон. Если не указать длительность, ничего анимироваться не будет, поскольку её значение по умолчанию — 0s (0 секунд).


Правило CSS @keyframes

Стили внутри правила @keyframes отмечают моменты, через которые проходит анимация, а элемент постепенно переходит от текущего стиля к каждому новому.

Всё это не даёт никакого эффекта, пока анимация не привязана к элементу.

Пример

Здесь элемент <div> привязан к «myAnimation». За 4 секунды цвет его фона плавно переходит от красного к жёлтому. Ключевые слова from и to означают 0% и 100%.

Prompt
Создайте CSS-анимацию, которая постепенно меняет цвет фона div-а размером 100x100px с красного на жёлтый за 4 секунды, используя @keyframes с ключевыми словами "from" и "to" вместе со свойствами animation-name и animation-duration.
Результат: полная HTML-страница

Ключевые кадры в процентах

Проценты могут заменить from и to и позволяют задать сколько угодно изменений стиля. В этом случае цвет фона меняется на 0%, 25%, 50% и 100%.

Prompt
Создайте CSS-анимацию с помощью @keyframes с процентными шагами (0%, 25%, 50%, 100%), чтобы изменить цвет фона div-а размером 100x100px через красный, жёлтый, синий и зелёный за 4 секунды.
Результат: полная HTML-страница

Цвет и позиция

Здесь ключевые кадры на 0%, 25%, 50%, 75% и 100% задают и цвет фона, и позицию, поэтому элемент <div> движется по квадратной траектории, пока его цвет меняется.

Prompt
Создайте CSS-анимацию с помощью @keyframes с процентными шагами (0%, 25%, 50%, 75%, 100%), которая изменяет как цвет фона, так и позицию относительно позиционированного div-а размером 100x100px, перемещая его по квадратной траектории и меняя цвет с красного на жёлтый, синий, зелёный и снова на красный за 4 секунды.
Результат: полная HTML-страница