Анимации CSS: практика

Основы фронтенд разработки

Анимации CSS: практика

Продолжительность: 25 мин

Пришло время применить знания о transition и анимациях на практике. Давайте добавим несколько визуальных эффектов на нашу страницу о Санкт-Петербурге.

Hover-эффект на карточках фич

Первым делом добавим эффект масштабирования к карточкам с фичами города при наведении курсора мыши. Для этого будем использовать псевдокласс :hover, свойство transform с функцией scale и transition для плавности.

Хороший hover-эффект обычно состоит из двух частей: базовое состояние (где мы описываем переход) и состояние при наведении (где мы задаём конечные значения):

.feature { transition: transform 0.3s ease, box-shadow 0.3s ease; } .feature:hover { transform: scale(1.03); box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12); }
css

Обратите внимание: transition мы задаём в базовом состоянии, а не в :hover. Это важно — если задать transition только в :hover, плавным будет только переход «в» состояние при наведении, а «обратно» элемент вернётся мгновенно.

Добавление box-shadow при наведении создаёт эффект «приподнятости» карточки — вместе с масштабированием это выглядит аккуратно и современно.

Анимация появления карточек достопримечательностей

Вторым эффектом добавим плавное появление карточек с достопримечательностями при загрузке страницы. Здесь удобно использовать @keyframes.

Анимация fadeUp — одна из самых распространённых: элемент появляется снизу и одновременно проявляется из прозрачного:

@keyframes fadeUp { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } }
css

Применяем анимацию к карточкам. Обратите внимание на animation-fill-mode: both — оно гарантирует, что до старта анимации карточка будет невидимой (иначе она мелькнёт перед началом):

.attractions .card { animation: fadeUp 0.6s ease-out both; }
css

Последовательное появление

Если все карточки появляются одновременно — это выглядит неплохо. Но если они появляются одна за другой с небольшой задержкой — значительно интереснее. Для этого используем псевдокласс :nth-child и свойство animation-delay:

.attractions .card:nth-child(1) { animation-delay: 0s; } .attractions .card:nth-child(2) { animation-delay: 0.1s; } .attractions .card:nth-child(3) { animation-delay: 0.2s; } .attractions .card:nth-child(4) { animation-delay: 0.3s; } .attractions .card:nth-child(5) { animation-delay: 0.4s; }
css

Небольшие задержки (0.1–0.15 секунды между карточками) смотрятся лучше, чем большие — страница не кажется медленной, но эффект каскада при этом виден.

Дополнительно — эффект на кнопках навигации

Если на вашей странице есть кнопки или ссылки в навигации, к ним тоже можно добавить плавный hover-переход. Например, изменение цвета текста или фона:

nav a { transition: color 0.2s ease; } nav a:hover { color: #4a90e2; }
css

Ожидаемый результат

После выполнения задания страница должна:

  • плавно масштабировать карточки фич при наведении;
  • показывать тень при наведении, создавая эффект «приподнятости»;
  • анимировать появление карточек достопримечательностей при загрузке страницы;
  • появлять карточки последовательно, а не все сразу.

В следующем уроке поговорим об адаптивной вёрстке — как сделать так, чтобы страница одинаково хорошо выглядела на мобильных устройствах и на десктопе.

Это платный урок

Купите полный доступ к курсу чтобы просматривать данный контент

Основы фронтенд разработки

Полный курс по основам веб-разработки с нуля: HTML, CSS и JavaScript. Вы сверстаете адаптивный лендинг, освоите анимации и работу с DOM, а в финале соберёте самостоятельный проект — интерактивный путеводитель по Санкт-Петербургу.

4990 Скидка 20%
3990

Безопасные платежи обрабатываются сервисом Юкасса

Комментарии

Войдите, чтобы оставить комментарий