CSS и вёрстка

Как сделать плавное подчеркивание при наведении css

Как сделать плавное подчеркивание при наведении css 📅 ⏱ 20:53 ⏳ 1 мин 💬 0

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

Как сделать плавное подчеркивание при наведении css

Коротко: плавное подчёркивание при наведении делают двумя способами: меняя background-size у ссылки (линия «выезжает» слева) или анимируя transform: scaleX() у псевдоэлемента ::after. Второй способ гибче: можно задать толщину, отступ и направление роста.

Кому и зачемПлавное подчёркивание — аккуратный микроэффект: он подсказывает, что элемент кликабелен, и при этом не «дёргает» вёрстку. Часто используют в меню, ссылках в тексте и карточках.

Два способа

Способ Особенность
background-size минимум кода, линия по тексту
::after + scaleX полный контроль толщины и положения

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




CSS
a.smooth {
  text-decoration: none;
  background-image: linear-gradient(#003F8F, #003F8F);
  background-repeat: no-repeat;
  background-position: 0 100%;
  background-size: 0% 2px;          /* линия «нулевой» длины */
  transition: background-size .25s ease;
}
a.smooth:hover { background-size: 100% 2px; }

Линия — это фон-градиент высотой 2px. Меняется только его длина. Работает даже для переноса строк.

CSS
a.line { position: relative; text-decoration: none; }
a.line::after {
  content: "";
  position: absolute;
  left: 0; bottom: -2px;
  width: 100%; height: 2px;
  background: #003F8F;
  transform: scaleX(0);
  transform-origin: left;
  transition: transform .25s ease;
}
a.line:hover::after { transform: scaleX(1); }

scaleX «растягивает» линию от левого края. Анимация на transform — самая плавная и дешёвая для браузера.

CSS
a.line--center::after { transform-origin: center; }

Поменяв transform-origin, получаете рост линии от центра или от правого края (right). Одно свойство — три разных эффекта.

CSS
a.line::after {
  height: 1px;
  background: currentColor;   /* цвет текста */
  bottom: -4px;               /* отступ от текста */
}

currentColor делает линию в цвет текста — тогда эффект работает и для светлых ссылок. Отступ задают через bottom.

Анимируйте transformИзменение width или background-size заставляет браузер пересчитывать раскладку. transform: scaleX() работает на графическом ускорителе — эффект плавнее, особенно на слабых устройствах.

Практика: подчёркивание для меню

  1. Уберите стандартное text-decoration.
  2. Создайте линию через ::after.
  3. Задайте scaleX(0) и transform-origin.
  4. Добавьте transition на transform.
  5. Покажите линию при :hover и :focus-visible.
  6. Проверьте на мобильном (там hover нет — оставьте видимый индикатор).
CSS
a.menu-link:hover::after,
a.menu-link:focus-visible::after { transform: scaleX(1); }

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

Симптом Причина Решение
Линия не появляется нет content: "" добавить
Линия «дёргается» анимируется ширина использовать transform
Линия «заезжает» на текст мало bottom сдвинуть ниже
На мобильном нет эффекта hover недоступен продублировать через :focus-visible

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

Чек-лист




Почему лучше анимировать transform?




Что делает transform-origin: center?




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

Да, но анимировать его сложно (только цвет и толщину). Для «выезжающей» линии используют псевдоэлемент или фон.

Вместо однотонной линии используйте linear-gradient с повторяющимися сегментами — получится пунктир или «зебра».

Да, часто делают у карточек: при наведении на карточку подчёркивание появляется под заголовком. Это заметный и аккуратный приём.

Нет, это только визуальный приём. Но заметные ссылки повышают кликабельность и вовлечённость.

Итоги

  • Подчёркивание делают фоном (background-size) или псевдоэлементом.
  • Анимируйте transform: scaleX() — это плавно.
  • transform-origin задаёт направление роста.
  • Продублируйте эффект для клавиатуры (:focus-visible).
Поделиться: ВКонтакте Telegram WhatsApp Одноклассники Viber Мой Мир

Комментарии

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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