Как убрать подчеркивание в браузере

Обновлено: 07.07.2024

Существует множество различных способов задать подчеркивание текста CSS . Если мы говорим об идеальном сценарии, подчеркивание должно удовлетворять следующим условиям:

  • Располагаться ниже базовой линии строки;
  • Не соприкасаться непосредственно с частями букв, выступающими ниже базовой линии;
  • Должна быть возможность изменять цвет, толщину и стиль линии подчеркивания;
  • Подчеркивание должно продолжаться после переноса текста;
  • Подчеркивание должно работать на любом фоне.

Все это довольно очевидно. Но, насколько я знаю, не существует способа добиться всего этого с помощью CSS .

Подходы

Способы, с помощью которых можно подчеркнуть текст в интернете:

  • text-decoration ;
  • border-bottom ;
  • box-shadow ;
  • background-image ;
  • Фильтры SVG ;
  • Underline.js (canvas) ;
  • text-decoration-* .

Давайте рассмотрим их один за другим и поговорим об их плюсах и минусах.

text-decoration

  • Его просто применять;
  • Располагается ниже базовой линии;
  • По умолчанию добавляет отступы от частей букв, выступающих ниже базовой линии ( в Safari и iOS );
  • Переносится по строкам;
  • Подходит для любого фона;
  • Не добавляет отступы от частей букв, выступающих ниже базовой линии, в других браузерах;
  • Нельзя изменить цвет, толщину или стиль линии подчеркивания.

border-bottom

Результат применения border-bottom к строчным элементам:

Обратите внимание, что линия подчеркивания размещается под частями букв, выступающими ниже базовой линии. Это можно изменить, задав для элемента свойство inline-block и уменьшив значение line-height . Но в этом случае вы теряете возможность переносить текст. Подходит для однострочного текста.

Можно использовать свойство text-shadow , чтобы скрыть часть линии подчеркивания, выступающей ниже базовой линии. При этом необходимо использовать цвет фона. Данный подход работает только со сплошными цветами фона, но не с градиентной заливкой или изображениями.

Чтобы задать одно подчеркивание, нужно применить четыре свойства стилей. Это больше, чем для text-decoration .

  • С помощью text-shadow можно задать отступы от частей букв, выступающих ниже базовой линии;
  • Можно изменить цвет, толщину и стиль линии CSS подчеркивания;
  • Можно задать переходы и анимацию для цвета и толщины линии подчеркивания;
  • Переносится по умолчанию, если это не inline-block ;
  • Работает на любом фоне, если не используется text-shadow .
  • Размещается далеко от текста, это положение трудно изменить;
  • Нужно использовать много дополнительных свойств;
  • Странное выделение текста при использовании свойства text-shadow .

box-shadow

Можно использовать тот же самый трюк, что и с text-shadow , чтобы имитировать отступы от частей букв, выступающих ниже базовой линии. Если линия подчеркивания должна отличаться по цвету от текста, то у вас не возникнет таких проблем, как в случае с text-decoration .

  • Нижнее подчеркивание CSS может быть размещено ниже базовой линии;
  • С помощью text-shadow можно задать отступы ниже базовой линии;
  • Можно изменить цвет и толщину линии подчеркивания;
  • Подчеркивание переносится построчно.
  • Невозможно изменить стиль;
  • Не работает для любого фона.

background-image

background-image дает результат, подходящий под все перечисленные критерии. При этом используются linear-gradient и background-position, чтобы создать изображение, которое повторяется по горизонтали вдоль строк текста. При этом для текста должно быть задано display: inline;.

Вместо linear-gradient можно добавить собственное изображение с какими-нибудь эффектами.

  • Подчеркивание ссылки CSS может быть размещено ниже базовой линии;
  • С помощью text-shadow можно задать отступы ниже базовой линии;
  • Можно изменять цвет, толщину и стиль подчеркивания;
  • Работает с пользовательскими изображениями;
  • Подчеркивание переносится построчно;
  • Работает на любом фоне, если не используется text-shadow .
  • Размер изображения может изменяться по-разному в зависимости от разрешения, браузера и масштаба просмотра.

Фильтры SVG

Можно создать SVG элемент filter , который рисует линию, а затем расширяет текст, чтобы скрыть прозрачные части линии. После этого нужно задать для фильтра идентификатор и сослаться на него в CSS :

Преимущество этого подхода заключается в том, что фильтр добавляет прозрачность, не используя text-shadow . Можно задать промежутки линии CSS подчеркивания выступающими ниже базовой на любом фоне. Но этот метод не применим для однострочного текста, в этом его основной недостаток.

Вот как это выглядит в Chrome и Firefox :

Фильтры SVG

Поддержка браузерами IE , Edge , и Safari является проблематичной. Проверить наличие поддержки SVG-фильтра в CSS трудно.

  • Может быть размещено ниже базовой линии;
  • Можно задать отступы ниже базовой линии;
  • Можно изменять цвет, толщину и стиль линии подчеркивания;
  • Работает на любом фоне.
  • Подчеркивание не переносится на несколько строк;
  • Не работает в IE , Edge или Safari , но можно создать резервный вариант с помощью text-decoration . В Safari оно будет выглядеть хорошо в любом случае.

Underline.js (canvas)

Underline.js рисует CSS подчеркивание с помощью элементов <canvas>. Это новый подход, который работает на удивление хорошо.

Это только техническая демо-версия, поэтому для использования библиотеки придется осуществить глобальные изменения в разрабатываемом проекте.

Мы приводим данный метод для демонстрации возможностей <canvas> при создании красивых, интерактивных подчеркиваний.

Свойства text-decoration-*

Это свойство прекрасно работает само по себе, но можно добавить несколько экспериментальных свойств для настройки внешнего вида:

  • text-decoration-color ;
  • text-decoration-skip ;
  • text-decoration-style .

Только не радуйтесь раньше времени. Помните о проблеме поддержки браузерами.

TEXT-DECORATION-COLOR

Позволяет изменить цвет CSS подчеркивания пунктиром отдельно от цвета текста. Данное свойство хорошо поддерживается браузерами. Оно работает в Firefox и с помощью префикса в Safari . Но если не обрабатывать разрывы ниже базовой линии текста, то Safari поместит подчеркивание поверх текста.

TEXT-DECORATION-COLOR

TEXT-DECORATION-COLOR - 2

TEXT-DECORATION-SKIP

Это свойство добавляет разрывы ниже базовой линии:

TEXT-DECORATION-SKIP

Оно не является стандартным и на данный момент работает только в Safari, поэтому для его применения нужно использовать префикс -webkit. Safari поддерживает это свойство по умолчанию, поэтому разрывы добавляются даже на тех сайтах, где свойство не указано вообще.

TEXT-DECORATION-STYLE

Данное свойство предлагает те же типы подчеркивания текста CSS , которые можно задать с помощью border-style . И кроме этого добавляет тип линии wavy ( волнистая ).

Ниже приводятся различные значения, которые можно использовать:

  • dashed ;
  • dotted ;
  • double ;
  • solid ;
  • wavy .

На данный момент text-decoration-style работает только в Firefox , вот скриншот:

TEXT-DECORATION-STYLE

Выглядит знакомо, не правда ли?

В чем недостатки?

Свойства text-decoration-* являются гораздо более интуитивными, чем большинство других способов. Но они не позволяют указать толщину линии и положение.

После небольшого исследования я нашел эти два свойства:

  • text-underline-width ;
  • text-underline-position .

Похоже, они рассматривались в более ранних версиях CSS , но так и не были реализованы из-за отсутствия интереса.

Вывод

Для CSS подчеркивания небольшого текста я рекомендую использовать text-decoration , а затем применить text-decoration-skip . Это выглядит не слишком изящно в большинстве браузеров, но зато будет работать. Плюс всегда есть шанс, что поддержка этих свойств будет реализована в большинстве браузеров.

Для большего текста стоит использовать подход фонового изображения. Он работает. Кроме этого, существуют примеси Sass , которые можно использовать вместе с ним. Можно одновременно не использовать text-shadow, если линия подчеркивания достаточно тонкая или отличается от текста по цвету.

Для одиночных строк текста используйте border-bottom и любые другие свойства.

Для добавления разрывов ниже базовой линии текста на градиентных фонах или фоновых изображениях попробуйте использовать SVG-фильтры . А когда поддержка браузерами существенно улучшится, можно будет добиться нужного эффекта с помощью свойств text-decoration-* .

Пожалуйста, опубликуйте ваши мнения по текущей теме материала. Мы очень благодарим вас за ваши комментарии, лайки, дизлайки, подписки, отклики!

Дайте знать, что вы думаете по данной теме материала в комментариях. За комментарии, отклики, подписки, лайки, дизлайки огромное вам спасибо!

Изначально ссылка не подчеркнута.
Когда навожу на нее не подчеркнута.
После нажатия - иконка не подчеркивается, но подчеркивается цифра.
Если после нажатия, кликнуть куда-то на страничке(даже на пустое место) - подчеркивание пропадает.

Добавлено через 21 минуту
Сделал вот так(убрал 'i') и подчеркивание пропало, но теперь цифра "прилипла" к иконке, а сдвинуть я так понимаю нельзя ее:

__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь

Css - убрать подчеркивание ссылки
Добрый день, подскажите почему убрав подчеркивание ссылки ,она остается подчеркнутой. css .

Как убрать нижнее подчеркивание с последней строки
Не могу убрать нижнее подчеркивание с последней строки как убрать? На каждый вопрос создавайте.


Как убрать подчеркивание при наведении мышки
в исходном коде написано следующее &lt;a.

Сделал вот так(убрал 'i') и подчеркивание пропало, но теперь цифра "прилипла" к иконке, а сдвинуть я так понимаю нельзя ее: Никто это здесь не увидит, потому что нету ваших стилей для иконки . Это будет просто цифр 5 в браузере и всё. Elarion, для цифры используйте вместо span - например тег p или для span задайте свойство display:inline-block и двигайте элемент куда захочется.


Как убрать подчеркивание определённого слова в ссылке?
Как убрать подчеркивание определённого слова в ссылке? Например ссылка &quot;Качественный ремонт.


Как убрать подчеркивание заголовка h3 при наведении?
Всем доброго времени суток. Есть вот такой код: &lt;div &lt;div.

Подчеркивание ссылки
Здравствуйте, как сделать с помощью HTML что б при наведении мышки на анкор-ссылку она станоилась.

Необычное подчеркивание ссылки
Подскажите, как сделать подчеркивание ссылок в навигации как на изображении при наведении курсора.

Читайте также: