Расстояние определяется используемым шрифтом. Попробуйте веб-безопасные шрифты.
Алексей Данченков
1
В CSS3 появилось много новых свойств для оформления текста. Пожалуйста, проверьте alligator.io/css/text-decoration Пример: text-underline-position: under;и text-decoration-skip: ink;Обратите внимание, что это, вероятно, не обратно совместимо со старыми браузерами.
Нет, но вы могли бы пойти с чем-то вроде border-bottom: 1px solid #000и padding-bottom: 3px.
Если вы хотите , один и тот же цвет «подчеркивание» (что в моем примере это граница), вы просто оставить из декларации цвет, то есть border-bottom-width: 1pxиborder-bottom-style: solid .
Для многострочного вы можете заключить многострочный текст в промежуток внутри элемента. Например , <a href="#"><span>insert multiline texts here</span></a>то просто добавьте border-bottomи paddingна <span>- Demo
Моя единственная проблема с этим трюком - когда я использую высоту строки, равную высоте div, а затем выравнивание по вертикали: middle; чтобы он был в центре, тогда я не могу использовать этот трюк, потому что тогда подчеркивание заканчивается ниже div.
deweydb
@deweydb: Как насчет добавления нижнего отступа к div контейнера? jsfiddle.net/dYfjc/1
chelmertz
+1 Я не знал о том, чтобы оставить свойство color для наследования цвета шрифта - это сэкономит много пота и слез в будущем!
Ларри
9
Я не совсем уверен, почему этот ответ имеет так много голосов. Это не полностью работает с многострочными текстами.
3
Для многострочных вы можете заключить многострочные тексты в промежуток внутри элемента. Например, <a href="#"><span>insert multiline texts here</span></a>просто добавьте border-bottom и отступы на <span>. jsfiddle.net/Aishaterr/vrpb2ey7/1
Даниэль Эрнандес,
133
Обновление 2019: Рабочая группа CSS опубликовала черновик для оформления текста уровня 4, в котором будет добавлено новое свойство text-underline-offset(а такжеtext-decoration-thickness ), позволяющее контролировать точное размещение подчеркивания. На момент написания статьи это черновой вариант на ранней стадии, который не был реализован ни одним браузером, но похоже, что в конечном итоге приведенная ниже техника устареет.
Оригинальный ответ ниже.
Проблема с использованием border-bottomнепосредственно в том , что даже padding-bottom: 0, подчеркивание имеет тенденцию быть слишком далеко от текста , чтобы хорошо выглядеть. Таким образом, у нас все еще нет полного контроля.
Одним из решений, обеспечивающих точность пикселей, является использование :afterпсевдоэлемента:
Это не будет работать для моей конкретной проблемы, но это фантастический трюк. +1
11
Хорошая работа, но это не будет работать для якорей, которые охватывают несколько строк
Willster
@ last-child Этот лучше, чем подчеркивание, но с
переносом
Одна проблема заключается в том, что границы и подчеркивание - это две разные вещи. Например, часть текста должна быть ниже подчеркивания. Если вы стилизуете a-теги как кнопки, у вас нет свободы использовать в качестве подчеркивания border-bottom.
Андерс Линден
10
Представьте себе, что кто-то, кто является новичком в веб-разработке, графический дизайнер, обычный пользователь или ваша мама, говорит, что это то, что требуется для добавления некоторого контролируемого пространства между текстом и подчеркиванием, и они будут удивляться, что вы делаете со своей жизнью. ,
MarcGuay
79
Вы можете использовать это text-underline-position: under
Спасибо! Если вы пытаетесь сделать пунктирное подчеркивание и видите, что оно нарисовано без пробела между нижней частью текста и линией, то это решает проблему.
Джонатан Кросс
6
Это правильный ответ для современных браузеров без каких-либо обходных путей.
Поддерживается в Firefox начиная с 74, по той же ссылке.
GSerg
11
Вникать в детали визуального стиля text-decoration:underlineдовольно бесполезно, так что вам придется взломать удаления text-decoration:underlineи заменить его чем-то другим, пока волшебная версия CSS в далеком будущем не даст нам больше контроля ,
Это сработало для меня:
a {background-image: linear-gradient(180deg, rgba(0,0,0,0),
rgba(0,0,0,0)81%,#22222281.1%,#22222285%,
rgba(0,0,0,0)85.1%,
rgba(0,0,0,0));text-decoration: none;}
<ahref="#">Lorem ipsum</a> dolor sit amet, <ahref="#">consetetur sadipscing</a> elitr, sed diam nonumy eirmod tempor <ahref="#">invidunt ut labore.</a>
К сожалению, ссылка eager.io больше не работает. Вы помните, что было взломом, чтобы спускатели выглядели лучше?
Кано
1
@ Kano - я думаю, что он использовал текстовую тень того же цвета, что и сплошной фон.
Squarecandy
Кроме того, с помощью описанной выше техники вы можете установить цвет подчеркивания, отличный от текста, поэтому иногда я устанавливаю его светлее, чем текст, что делает столкновения со спусковыми механизмами меньшей проблемой для удобочитаемости.
Squarecandy
7
Я знаю, что это старый вопрос, но для настройки однострочного текста, display: inline-blockа затем для настройки heightхорошо сработал контроль расстояния между границей и текстом.
Мне не нужно было устанавливать высоту. Я просто завернул его в другой div и, поскольку хотел, чтобы он был отцентрирован, я просто установил выравнивание текста на out div.
Парень Лоу
6
@ Ответ последнего ребенка - отличный ответ!
Тем не менее, добавление границы для моего H2 привело к подчеркиванию длиннее, чем текст.
Если вы динамически пишете свой CSS или если вам нравится я, вам повезло, и вы знаете, каким будет текст, вы можете сделать следующее:
изменить на contentчто-то правильную длину (то есть
текст) установить цвет шрифта transparent(или rgba(0,0,0,0))
чтобы подчеркнуть <h2>Processing</h2>(например), измените код last-child на:
H2s - это блочные элементы, которые могут объяснить, почему подчеркивание длиннее, чем текст. Может быть, display: inline-blockэто исправить. Замена текста contentвыглядит как хак, который может сломаться разными способами.
Вам нужно будет использовать свойство border width и свойство padding. Я добавил анимацию, чтобы она выглядела круче:
body{background-color:lightgreen;}
a{text-decoration:none;color:green;border-style:solid;border-width:0px0px1px0px;transition: all .2s ease-in;}a:hover{color:darkblue;border-style:solid;border-width:0px0px1px0px;padding:2px;}
<ahref='#'>Somewhere ... over the rainbow (lalala)</a> , blue birds, fly... (tweet tweet!), and I wonder (hmm) about what a <i><ahref="#">what a wonder-ful world!</a> World!</i>
Вы можете заменить второе 100%на что-то другое pxили emотрегулировать вертикальное положение подчеркивания. Также вы можете использовать, calcесли вы хотите добавить вертикальный отступ, например:
Конечно, вы также можете сделать свой собственный шаблон base64 png другого цвета, высоты и дизайна, например, здесь: http://www.patternify.com/ - просто установите ширину квадрата и высоту в 2x1.
text-underline-position: under;
иtext-decoration-skip: ink;
Обратите внимание, что это, вероятно, не обратно совместимо со старыми браузерами.text-underline-offset
здесь: bugs.chromium.org/p/chromium/issues/…Ответы:
Нет, но вы могли бы пойти с чем-то вроде
border-bottom: 1px solid #000
иpadding-bottom: 3px
.Если вы хотите , один и тот же цвет «подчеркивание» (что в моем примере это граница), вы просто оставить из декларации цвет, то есть
border-bottom-width: 1px
иborder-bottom-style: solid
.Для многострочного вы можете заключить многострочный текст в промежуток внутри элемента. Например ,
<a href="#"><span>insert multiline texts here</span></a>
то просто добавьтеborder-bottom
иpadding
на<span>
- Demoисточник
<a href="#"><span>insert multiline texts here</span></a>
просто добавьте border-bottom и отступы на<span>
. jsfiddle.net/Aishaterr/vrpb2ey7/1Обновление 2019: Рабочая группа CSS опубликовала черновик для оформления текста уровня 4, в котором будет добавлено новое свойство
text-underline-offset
(а такжеtext-decoration-thickness
), позволяющее контролировать точное размещение подчеркивания. На момент написания статьи это черновой вариант на ранней стадии, который не был реализован ни одним браузером, но похоже, что в конечном итоге приведенная ниже техника устареет.Оригинальный ответ ниже.
Проблема с использованием
border-bottom
непосредственно в том , что дажеpadding-bottom: 0
, подчеркивание имеет тенденцию быть слишком далеко от текста , чтобы хорошо выглядеть. Таким образом, у нас все еще нет полного контроля.Одним из решений, обеспечивающих точность пикселей, является использование
:after
псевдоэлемента:Изменяя
bottom
свойство (отрицательные числа в порядке), вы можете расположить подчеркивание именно там, где вы хотите.Одной из проблем, связанных с этим методом, является то, что он ведет себя немного странно с переносом строк.
источник
Вы можете использовать это
text-underline-position: under
Смотрите здесь для более подробной информации: https://css-tricks.com/almanac/properties/t/text-underline-position/
Смотрите также совместимость браузера .
источник
Вот то, что хорошо работает для меня.
источник
text-underline-position
не поддерживается в Firefox согласно developer.mozilla.org/en-US/docs/Web/CSS/…Вникать в детали визуального стиля
text-decoration:underline
довольно бесполезно, так что вам придется взломать удаленияtext-decoration:underline
и заменить его чем-то другим, пока волшебная версия CSS в далеком будущем не даст нам больше контроля ,Это сработало для меня:
Вот версия со всеми проприетарными свойствами для обратной совместимости:
Обновление: версия SASSY
Я сделал сксс-миксин для этого. Если вы не используете SASS, обычная версия выше все еще работает отлично ...
тогда используйте это так:
Обновление 2: Совет по спусковым механизмам
Если у вас сплошной фоновый цвет, попробуйте добавить тонкий
text-stroke
илиtext-shadow
того же цвета, что и фон, чтобы спускатели выглядели хорошо.кредит
Это упрощенная версия метода, который я первоначально нашел на https://eager.io/app/smartunderline , но с тех пор статья была удалена.
источник
Я знаю, что это старый вопрос, но для настройки однострочного текста,
display: inline-block
а затем для настройкиheight
хорошо сработал контроль расстояния между границей и текстом.источник
@ Ответ последнего ребенка - отличный ответ!
Тем не менее, добавление границы для моего H2 привело к подчеркиванию длиннее, чем текст.
Если вы динамически пишете свой CSS или если вам нравится я, вам повезло, и вы знаете, каким будет текст, вы можете сделать следующее:
изменить на
content
что-то правильную длину (то естьтекст) установить цвет шрифта
transparent
(илиrgba(0,0,0,0)
)чтобы подчеркнуть
<h2>Processing</h2>
(например), измените код last-child на:источник
display: inline-block
это исправить. Замена текстаcontent
выглядит как хак, который может сломаться разными способами.Смотри мою скрипку .
Вам нужно будет использовать свойство border width и свойство padding. Я добавил анимацию, чтобы она выглядела круче:
источник
В качестве альтернативы многострочным текстам или ссылкам, вы можете заключить текст в промежуток внутри элемента блока.
тогда вы можете просто добавить border-bottom и отступы на
<span>
.Вы можете обратиться к этой скрипке. https://jsfiddle.net/Aishaterr/vrpb2ey7/2/
источник
Если вы хотите:
Подчеркните, вы можете использовать фоновое изображение высотой 1 пиксель с
repeat-x
и100% 100%
положение:Вы можете заменить второе
100%
на что-то другоеpx
илиem
отрегулировать вертикальное положение подчеркивания. Также вы можете использовать,calc
если вы хотите добавить вертикальный отступ, например:Конечно, вы также можете сделать свой собственный шаблон base64 png другого цвета, высоты и дизайна, например, здесь: http://www.patternify.com/ - просто установите ширину квадрата и высоту в 2x1.
Источник вдохновения: http://alistapart.com/article/customunderlines
источник
Если вы используете
text-decoration: underline;
, то вы можете добавить пробел между подчеркиванием и текстом, используяtext-underline-position: under;
Подробнее о свойствах text-underline-position вы можете посмотреть здесь
источник
Я смог сделать это, используя U (подчеркивание тега)
источник
Это то, что я использую:
HTML:
CSS:
источник
Что я использую:
источник