CSS и вёрстка

Как сделать анимацию в css при наведении

📅 ⏱ 21:33 ⏳ 1 мин 💬 0

Как сделать анимацию в css при наведении: простыми словами, по шагам и с примерами. Разбираем, как это работает на практике, типичные ошибки и лучшие решения. Р

Коротко: анимация при наведении делается двумя способами. Плавное изменение свойств — через transition на :hover (подъём карточки, смена цвета, масштаб). Сложная последовательность — через @keyframes и animation. Для интерфейса обычно хватает transition с transform и opacity.

Кому и зачемМикроанимации при наведении дают «отклик»: кнопка понимает, что на неё смотрят, карточка приподнимается, ссылка подчёркивается. Это дешёвый способ сделать интерфейс живым.

Что выбрать

Задача Инструмент
Смена цвета, тени transition
Подъём, увеличение transition + transform
Повторяющаяся анимация @keyframes + animation
Плавный переход «туда-обратно» transition на базовом правиле

Вкладки: примеры




CSS
.btn {
  background: #003F8F;
  transition: background .25s ease;
}
.btn:hover { background: #002a61; }

Простая смена цвета. transition обязательно указывайте на базовом селекторе — тогда анимация работает и «туда», и «обратно».

CSS
.card {
  transition: transform .25s ease-out, box-shadow .25s ease-out;
}
.card:hover {
  transform: translateY(-6px);
  box-shadow: 0 12px 28px rgba(0,0,0,.14);
}

Классический «подъём» карточки. translateY не влияет на раскладку — соседние элементы не сдвигаются.

CSS
.thumb { overflow: hidden; }
.thumb img { transition: transform .35s ease; }
.thumb:hover img { transform: scale(1.06); }

«Зум» картинки внутри блока. overflow: hidden обязателен, иначе увеличенное изображение вылезет за границы.

CSS
@keyframes pulse {
  0%   { transform: scale(1); }
  50%  { transform: scale(1.08); }
  100% { transform: scale(1); }
}
.badge:hover { animation: pulse .6s ease; }

Когда нужно «пульсировать» или повторить набор шагов — используйте @keyframes. Для одиночного изменения свойств keyframes избыточны.

Уважайте настройки пользователяНекоторым людям анимации неприятны. Добавьте вежливое правило:
CSS
@media (prefers-reduced-motion: reduce) {
  * { transition: none !important; animation: none !important; }
}

Практика: три эффекта для карточек

  1. Задайте базовые transition для transform и box-shadow.
  2. На :hover сдвиньте карточку вверх на 4–6px.
  3. Добавьте усиленную тень.
  4. Для картинки — лёгкий scale(1.05) внутри обрезки.
  5. Проверьте, что эффект работает с клавиатуры (:focus-visible).

Частые ошибки: причина → решение

Симптом Причина Решение
Анимация только «туда» transition указан в :hover перенести в базовое правило
Вёрстка «дёргается» анимируется margin/height использовать transform
Картинка вылезает нет overflow: hidden добавить обрезку
Тормозит на телефоне много анимаций сразу уменьшить количество и длительность

Проверьте себя

Чек-лист




Почему анимация работает только при наведении?




Что анимировать для «подъёма» карточки?




Вопросы и ответы

Когда анимация состоит из нескольких шагов или должна повторяться (пульсация, «покачивание», вращение).

Продублируйте состояние через :focus-within или меняйте по тапу классом. Иначе эффект «залипнет» после касания.

Косвенно: избыточные анимации замедляют страницу. Умеренные микроанимации наоборот повышают вовлечённость.

transform и opacity: их браузер обрабатывает на графическом ускорителе без пересчёта раскладки.

Итоги

  • Простые эффекты — transition, сложные — @keyframes.
  • transition задавайте в базовом правиле.
  • Анимируйте transform и opacity.
  • Не забывайте про prefers-reduced-motion и клавиатуру.
Поделиться: ВКонтакте Telegram WhatsApp Одноклассники Viber Мой Мир

Комментарии

Пока комментариев нет — будьте первым, кто поделится мнением.

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Получите консультацию нашего маркетолога

Изучит ваш проект, подберет подходящие услуги и тарифы

Получите бесплатный аудит

Наш специалист сделает базовый аудит вашего проекта и предложит персональные предложения.

Закажите услугу Каталог морепродуктов

Наш специалист свяжется с вами в ближайшее время и уточнит детали

Закажите адаптивный сайт

Наш специалист поможет составить Вам техническое задание на разработку сайта

Закажите сайт

Наш специалист поможет составить Вам техническое задание на разработку сайта

Закажите сайт лендинг

Наш специалист поможет составить Вам техническое задание на разработку сайта

Закажите сайт каталог

Наш специалист поможет составить Вам техническое задание на разработку сайта

Закажите интернет-магазин

Наш специалист поможет составить Вам техническое задание на разработку сайта

Закажите веб-приложение

Наш специалист поможет составить Вам техническое задание на разработку сайта

Закажите тариф Аутсорс

Стоимость от 150 000 ₽

Закажите тариф Магазин

Стоимость 90 000 ₽

Закажите тариф Классический

Стоимость 60 000 ₽

Закажите тариф Эконом

Стоимость 40 000 ₽

Закажите SEO продвижение

Наш специалист свяжется с вами, проведет анализ, предложит стоимость