Как подчеркнуть текст в CSS
text-decoration: underline рисует линию под текстом. Линия берет цвет текста, если не задать ей свой.
Вторая строка использует сокращенную запись text-decoration для типа линии, стиля и цвета, а затем задает толщину и отступ отдельными свойствами. Спецификация разрешает указывать толщину и внутри сокращенной записи, но Safari тогда отбрасывает все объявление, поэтому пишите text-decoration-thickness отдельно.
Свойства text-decoration
| Свойство | Значения | По умолчанию |
|---|---|---|
text-decoration-line | underline, overline, line-through, none (можно сочетать) | none |
text-decoration-style | solid, double, dotted, dashed, wavy | solid |
text-decoration-color | Любой цвет | currentColor (цвет текста) |
text-decoration-thickness | Длина, проценты, auto, from-font | auto |
text-underline-offset | Длина, проценты, auto | auto |
text-decoration это сокращенная запись для первых четырех, но толщину в нее не включайте: Safari игнорирует объявление text-decoration, в котором она есть. text-underline-offset отдельное свойство, его нужно писать самостоятельно.
Стили, цвета и толщина
Как сдвинуть подчеркивание: text-underline-offset
По умолчанию линия идет близко к буквам и обходит выносные элементы вроде g, p и y. text-underline-offset опускает ее ниже, и на заголовках и ссылках это часто смотрится аккуратнее:
Разрывы вокруг выносных элементов дает text-decoration-skip-ink: auto, включенный по умолчанию. Задайте none для сплошной линии.
Как убрать подчеркивание у ссылок
Ссылки подчеркивает таблица стилей браузера. text-decoration: none убирает подчеркивание. Многие читатели находят ссылки по подчеркиванию, поэтому возвращайте его при наведении и фокусе с клавиатуры и давайте ссылке цвет, отличный от текста:
В навигационных панелях и кнопках подчеркивание можно убрать, потому что их расположение и так говорит «это ссылка». Внутри абзаца текста его лучше оставить. Подробнее о состояниях ссылок на странице про hover.
Надчеркивание и зачеркивание
text-decoration-line рисует линию и над текстом, и через него, а также принимает несколько значений сразу:
.old-price { text-decoration: line-through; }
.both { text-decoration-line: underline overline; }
Зачеркивание через CSS чисто визуальное. Если текст это удаленное содержимое (измененная цена, убранный пункт), размечайте его через <s> или <del>, как показано на странице про подчеркивание в HTML, чтобы смысл был в разметке, а не только в оформлении.
Частые ошибки
<u>для декоративного подчеркивания.<u>нужен для текста, отмеченного как особый, например опечаток. Для оформленного подчеркивания используйте CSS.- Подчеркивание текста, который не является ссылкой. Читатели будут пытаться по нему кликнуть. Для выделения используйте жирный шрифт, цвет или фон.
- Удаление подчеркивания ссылок в основном тексте без другой подсказки. Одного цвета мало для читателей, которые не видят разницы.
- Попытка убрать подчеркивание родителя из дочернего элемента. Изнутри его не отменить; измените родителя или сделайте дочерний элемент
inline-block. - Ожидание
text-underline-offsetв сокращенной записи. Это отдельное свойство. - Толщина в сокращенной записи.
text-decoration: underline 2pxработает в Chrome и Firefox, но Safari отбрасывает все объявление. Используйтеtext-decoration-thickness.
Часто задаваемые вопросы
Как подчеркнуть текст в CSS?
Задайте элементу text-decoration: underline;. Для вида линии добавьте text-decoration-color, text-decoration-style, text-decoration-thickness и text-underline-offset.
Как убрать подчеркивание у ссылки?
Задайте text-decoration: none; элементу a. Убедитесь, что ссылки все равно выделяются иначе (цветом плюс подчеркиванием при наведении или фокусе), потому что многие читатели находят ссылки именно по подчеркиванию.
Как изменить цвет подчеркивания?
Используйте text-decoration-color или сокращенную запись: text-decoration: underline #f59e0b;. Без этого линия берет цвет текста.
Как добавить расстояние между текстом и подчеркиванием?
Используйте text-underline-offset, например text-underline-offset: 4px;. Чем больше значение, тем ниже линия под текстом.
Почему не получается убрать подчеркивание у дочернего элемента?
Подчеркивание, которое рисует родитель, проходит через его дочерние элементы, и изнутри их его не убрать. Уберите его на элементе, который его задает, или сделайте дочерний элемент display: inline-block, до которого оформление родителя не доходит.