
В CSS подчеркивание текста при наведении реализуется с помощью псевдокласса :hover и свойства text-decoration. Стандартный синтаксис позволяет менять стиль подчеркивания, его цвет и толщину без использования JavaScript.
Для контроля внешнего вида текста рекомендуется применять text-decoration-line для выбора типа подчеркивания, text-decoration-color для задания цвета и text-decoration-thickness для точного регулирования толщины линии. Современные браузеры поддерживают эти свойства, обеспечивая кроссбраузерную совместимость.
Часто используют плавные переходы с помощью transition. Например, transition: text-decoration-color 0.3s ease делает подчеркивание менее резким при наведении. Это улучшает визуальное восприятие и повышает удобство интерфейса.
При выборе цвета подчеркивания важно учитывать контраст с фоном и основным цветом текста. Для динамического взаимодействия с пользователем целесообразно использовать оттенки на 20–30% темнее или светлее исходного текста, что повышает читаемость и визуальный акцент.
Использование свойства text-decoration для hover

Свойство text-decoration управляет визуальными эффектами текста, включая подчеркивание, перечеркивание и надчеркивание. Для создания эффекта при наведении используется селектор :hover. Например, a:hover { text-decoration: underline; } добавляет подчеркивание только при наведении курсора.
Для современного оформления рекомендуется комбинировать text-decoration с text-decoration-color и text-decoration-thickness. Это позволяет изменить цвет и толщину линии независимо от текста. Пример: a:hover { text-decoration: underline; text-decoration-color: #ff0000; text-decoration-thickness: 2px; }.
Свойство text-decoration-style задает стиль линии: solid, wavy, dotted, dashed. При hover можно создавать динамичные эффекты: a:hover { text-decoration: underline wavy blue; } добавляет волнистую синюю линию.
Для плавного появления подчеркивания используют transition: a { text-decoration: none; transition: text-decoration 0.2s ease-in-out; }. Это предотвращает резкую смену состояния и делает интерфейс визуально аккуратным.
При работе с text-decoration важно учитывать поддержку браузеров: text-decoration-thickness и text-decoration-style полностью поддерживаются в современных версиях Chrome, Firefox, Edge, но требуют проверки для старых Safari.
Сочетание этих свойств позволяет создавать информативные и эстетичные hover-эффекты без использования псевдоэлементов, что сокращает количество кода и повышает читаемость стилей.
Стилизация подчеркивания через border-bottom

Для создания динамичного подчеркивания при наведении применяют свойство border-bottom. Оно позволяет задать толщину, стиль и цвет линии, что дает больше контроля по сравнению с text-decoration.
Простейший вариант: задать базовый цвет линии прозрачным, а при наведении менять его на нужный. Например:
border-bottom: 2px solid transparent; и :hover { border-bottom-color: #ff0000; }. Такой подход сохраняет высоту строки без смещения текста.
Для плавной анимации используют transition. Настройка transition: border-color 0.3s ease; позволяет линии появляться постепенно, создавая аккуратный эффект подчеркивания.
Можно комбинировать с padding-bottom для увеличения расстояния между текстом и линией. Например, padding-bottom: 2px; делает подчеркивание визуально отделенным от букв, улучшая читаемость.
Использование различных стилей линии (solid, dashed, dotted) позволяет выделять разные элементы: border-bottom: 1px dashed #333; для второстепенных ссылок и solid для ключевых.
При необходимости анимации «выезда» подчеркивания применяют псевдоэлементы ::after с абсолютным позиционированием и изменением ширины от 0 до 100% на :hover. Это дает более гибкий контроль, чем стандартный border-bottom.
Важно помнить о совместимости с разными шрифтами и размерами текста: линия должна быть видимой, но не утяжелять визуально блок. Толщина 1–2px подходит для большинства интерфейсов, 3px используют для заголовков.
Цвет подчеркивания стоит согласовывать с общей палитрой интерфейса: контрастный цвет привлекает внимание, приглушенный – служит декоративным акцентом.
Создание анимации подчеркивания с transition
Для плавного появления подчеркивания на тексте применяется свойство transition. Оно позволяет анимировать изменение CSS-свойств, таких как width, opacity или transform.
Пример базовой реализации с использованием псевдоэлемента ::after:
- Создать элемент с классом, например
.underline-link. - Добавить псевдоэлемент
::afterс абсолютным позиционированием, который будет линией под текстом. - Изначально задать ширину
0и свойствоtransition: width 0.3s ease;. - При наведении (
:hover) изменять ширину на100%.
Пример CSS-кода:
.underline-link {
position: relative;
color: #1a1a1a;
text-decoration: none;
}
.underline-link::after {
content: "";
position: absolute;
left: 0;
bottom: 0;
height: 2px;
width: 0;
background-color: #ff6600;
transition: width 0.3s ease;
}
.underline-link:hover::after {
width: 100%;
}
Рекомендации для оптимизации:
- Использовать
transitionдля нескольких свойств одновременно, напримерwidth, opacity, чтобы добавить эффект плавного появления. - Выбирать временную функцию
ease-in-outдля более естественной анимации. - Для более тонкой настройки использовать дробные значения
0.25s–0.5sв зависимости от длины текста. - Применять
transform: scaleX()вместо измененияwidthдля меньшей нагрузки на рендеринг в больших списках ссылок.
Метод с transition позволяет создать минималистичное, отзывчивое подчеркивание, которое работает без использования JavaScript и не влияет на компоновку текста.
Изменение цвета подчеркивания при наведении

Для изменения цвета подчеркивания при наведении используется сочетание text-decoration, text-decoration-color и псевдокласса :hover. Это позволяет менять только цвет линии, не затрагивая цвет текста.
Пример применения:
a {
text-decoration: underline;
text-decoration-color: black;
}
a:hover {
text-decoration-color: #ff4500;
}
Для плавного изменения цвета рекомендуется добавлять переход:
a {
text-decoration: underline;
text-decoration-color: black;
transition: text-decoration-color 0.25s ease-in-out;
}
a:hover {
text-decoration-color: #1e90ff;
}
Рекомендации по выбору цвета подчеркивания:
- Контраст с фоном – линия должна быть заметной.
- Использовать корпоративные цвета для ссылок на сайте.
- Для темных тем применять светлые оттенки подчеркивания.
Дополнительные настройки:
text-underline-offsetпозволяет сместить линию, создавая визуальный акцент.- В современных браузерах можно использовать градиенты:
text-decoration-color: linear-gradient(...). - Совместимость: Chrome, Firefox, Edge поддерживают отдельное задание цвета. Safari до версии 15 может некорректно анимировать изменение цвета подчеркивания.
Практика показывает, что выделение цвета подчеркивания улучшает восприятие ссылок и упрощает визуальное различие между интерактивными элементами и обычным текстом.
Настройка толщины и стиля линии подчеркивания
Для управления толщиной подчеркивания в CSS используется свойство text-decoration-thickness. Допустимые значения: абсолютные (2px, 0.1em) и относительные (from-font, auto). Пример применения:
a:hover { text-decoration: underline; text-decoration-thickness: 3px; }
Свойство text-decoration-style отвечает за вид линии. Доступные варианты:
| Значение | Описание |
|---|---|
| solid | сплошная линия |
| dashed | пунктирная линия |
| dotted | точечная линия |
| wavy | волнистая линия |
| double | двойная линия |
Пример комбинирования толщины и стиля:
a:hover { text-decoration: underline; text-decoration-thickness: 2px; text-decoration-style: wavy; }
Для адаптивного дизайна рекомендуется задавать толщину в относительных единицах, например em или rem, чтобы подчеркивание масштабировалось вместе с размером шрифта.
Важно помнить, что сочетание стиля wavy с большой толщиной линии может влиять на читаемость текста, поэтому обычно используют значения до 3px.
Подчеркивание только части текста при hover
Для подчеркивания отдельного фрагмента текста при наведении используется обертка внутри элемента, например, . Класс с hover-эффектом назначается именно этой обертке.
Пример структуры:
<p>Текст с <span class="hover-underline">выделенной частью</span> для подчеркивания.</p>
CSS-правило для подчеркивания фрагмента:
.hover-underline:hover { text-decoration: underline; }
Это гарантирует, что при наведении курсора подчеркивается только выделенная часть, а остальной текст остается без изменений.
Для контроля толщины и цвета подчеркивания вместо стандартного text-decoration можно использовать text-decoration-thickness и text-decoration-color:
.hover-underline:hover { text-decoration: underline; text-decoration-thickness: 2px; text-decoration-color: #0077cc; }
При динамическом изменении длины текста или адаптивной верстке рекомендуется использовать display: inline-block; для обертки, чтобы подчеркивание точно соответствовало ширине фрагмента.
Для плавного появления линии добавляется переход:
.hover-underline { transition: text-decoration-color 0.3s ease; }
Это улучшает визуальное восприятие без вмешательства в остальной текст.
Поддержка подчеркивания в разных браузерах
CSS-свойство text-decoration поддерживается всеми современными браузерами, включая Chrome, Firefox, Safari, Edge и Opera. Для динамического подчеркивания при наведении используется комбинация селектора :hover и значений underline или text-decoration-line: underline.
Chrome и Edge корректно обрабатывают как text-decoration: underline, так и новые свойства из спецификации CSS Text Decoration Module Level 3 (text-decoration-thickness, text-decoration-color, text-decoration-style), позволяя изменять толщину, цвет и стиль линии при наведении.
Firefox поддерживает все свойства из Level 3 с версии 70. Для обеспечения кроссбраузерного эффекта при наведении рекомендуется задавать text-decoration-line: underline отдельно и использовать transition для плавного изменения стиля.
Safari поддерживает базовое подчеркивание, но до версии 13 ограничена в настройке толщины и стиля линии. Для корректного отображения кастомных подчеркиваний на старых версиях Safari применяют fallback к text-decoration: underline.
Internet Explorer 11 и ниже не поддерживают свойства CSS Level 3. Для этих браузеров следует использовать только text-decoration: underline без кастомизации цвета или толщины.
Для максимальной совместимости рекомендуется задавать базовое text-decoration: underline для всех ссылок и добавлять расширенные свойства для современных браузеров через отдельные правила. При использовании transition важно проверять работу анимации в Firefox и Safari, так как эти браузеры требуют явного указания всех изменяемых свойств.
