DevSkillRoad

Анимации в CSS

🎬 @keyframes, animation-name, duration, iteration-count, direction, fill-mode

Анимации позволяют создавать сложные, повторяющиеся движения. В отличие от переходов (transition), которые реагируют на действие пользователя (например, наведение), анимации запускаются автоматически при загрузке страницы или по событию.

1. @keyframes — определение анимации

Правило @keyframes задаёт последовательность состояний (ключевых кадров) анимации.

@keyframes имя-анимации {
    0% { свойство: значение; }
    50% { свойство: значение; }
    100% { свойство: значение; }
}
📌 Вместо 0% и 100% можно использовать ключевые слова from и to.

2. animation-name и animation-duration

animation-name — задаёт имя анимации (должно совпадать с именем в @keyframes).
animation-duration — задаёт длительность анимации (в секундах s или миллисекундах ms).

.element {
    animation-name: color-change;
    animation-duration: 2s;
}

@keyframes color-change {
    0% { background-color: #530899; }
    50% { background-color: #14b8a6; }
    100% { background-color: #530899; }
}
Цвет фона плавно меняется

✅ Фон меняется каждые 2 секунды

3. animation-iteration-count — количество повторов

Задаёт, сколько раз повторится анимация.

Возможные значения:

.element {
    animation-iteration-count: 3;  /* повторится 3 раза */
}
Подпрыгну 3 раза

✅ Анимация повторится ровно 3 раза и остановится

4. animation-direction — направление анимации

Задаёт направление воспроизведения анимации.

Возможные значения:

.element {
    animation-direction: alternate;
}
Двигаюсь туда-обратно

✅ Анимация идёт вперёд, потом назад

5. animation-timing-function — ускорение

Определяет, как меняется скорость анимации на протяжении времени.

Возможные значения:

linear
ease

✅ linear — равномерно, ease — плавное ускорение и замедление

6. animation-delay — задержка перед началом

Задаёт время ожидания перед началом анимации.

Цвет изменится через 1 секунду

✅ Анимация начинается через 1 секунду после загрузки

7. animation-fill-mode — что происходит до/после анимации

Определяет, какие стили применяются к элементу вне времени воспроизведения анимации (до начала и после окончания).

Возможные значения:

none — 3 сек ждёт (фиолетовый) → 3 сек анимация → возврат к фиолетовому
forwards — 3 сек ждёт (фиолетовый) → 3 сек анимация → 🟢 остаётся бирюзовым
backwards — 🟡 сразу жёлтый (3 сек) → 3 сек анимация → возврат к фиолетовому
both — 🟡 сразу жёлтый (3 сек) → 3 сек анимация → 🟢 остаётся бирюзовым

both = backwards (жёлтый во время задержки) + forwards (бирюзовый после окончания)

8. Сокращённое свойство animation

Объединяет все свойства анимации в одной строке.

Синтаксис: animation: имя длительность задержка ускорение количество направление fill-mode;

Всё в одной строке

✅ Сокращённая запись

📓 Из тетради: «Анимации — мощный инструмент, но используйте их с умом. Слишком частая или долгая анимация может раздражать пользователя. Оптимальная длительность — 0.5–2 секунды. И не забывайте про `animation-fill-mode: forwards`, если хотите сохранить конечное состояние».