🌐 Свой первый сайт Урок 14 из 16 · 0 из 16

Урок 14. Анимация: оживляем страницу

Заставим элементы двигаться сами — без единой строчки JavaScript.

Сначала transform

Это свойство двигает, вращает и масштабирует элемент, не сдвигая соседей:

  • transform: translateY(-10px); — поднять на 10 пикселей;
  • transform: rotate(15deg); — повернуть на 15 градусов;
  • transform: scale(1.2); — увеличить в 1,2 раза.

Вместе с :hover и transition это уже готовый эффект:

.karta:hover {
  transform: translateY(-8px) scale(1.03);
}

Настоящая анимация — @keyframes

Если движение должно идти само, без мышки, сначала описывают «кадры»:

@keyframes plavanie {
  0%   { transform: translateY(0); }
  50%  { transform: translateY(-18px); }
  100% { transform: translateY(0); }
}

Это как раскадровка мультфильма: в начале элемент на месте, в середине поднялся, в конце вернулся. А дальше анимацию включают элементу:

.shar {
  animation: plavanie 3s ease-in-out infinite;
}
  • plavanie — имя, которое ты придумал в @keyframes;
  • 3s — сколько длится один круг;
  • ease-in-out — плавный старт и финиш;
  • infinite — повторять бесконечно.
Подсказка. Анимации хороши в меру. Если на странице всё одновременно прыгает, читать её невозможно — и части людей от этого становится физически плохо. Один-два спокойных эффекта лучше десяти.

Твой прогресс

Опыт и значки хранятся прямо в этом браузере — ни имени, ни почты для этого не нужно. Все треки и значки →

Частые вопросы

Как сделать анимацию на чистом CSS?

Описать кадры правилом @keyframes с именем, а потом задать элементу свойство animation, указав это имя, длительность и режим повтора. JavaScript для простых анимаций не нужен.

Чем transition отличается от animation?

transition делает плавным переход между двумя состояниями — например, при наведении мыши. animation проигрывает заданную последовательность кадров сама, без действий пользователя.