Как увеличить разрыв между текстом и подчеркиванием в CSS
Использование CSS, когда текст имеет text-decoration:underline
Можно ли увеличить расстояние между текстом и подчеркиванием?
20 ответов
Нет, но вы могли бы пойти с чем-то вроде 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>
- Демо
Проблема с использованием border-bottom
прямо в том, что даже с padding-bottom: 0
подчеркивание имеет тенденцию быть слишком далеко от текста, чтобы выглядеть хорошо. Таким образом, мы все еще не имеем полного контроля.
Одним из решений, которое дает вам точность пикселей, является использование :after
псевдоэлемент:
a {
text-decoration: none;
position: relative;
}
a:after {
content: '';
width: 100%;
position: absolute;
left: 0;
bottom: 1px;
border-width: 0 0 1px;
border-style: solid;
}
Изменяя bottom
свойство (отрицательные числа в порядке) вы можете расположить подчеркивание именно там, где вы хотите.
Одной из проблем, связанных с этим методом, является то, что он ведет себя немного странно с переносами строк.
Вы можете использовать это text-underline-position: under
Смотрите здесь для более подробной информации: https://css-tricks.com/almanac/properties/t/text-underline-position/
Смотрите также совместимость браузера.
Just use
{
text-decoration-line: underline;
text-underline-offset: 2px;
}
Вот то, что хорошо работает для меня.
<style type="text/css">
#underline-gap {
text-decoration: underline;
text-underline-position: under;
}
</style>
<body>
<h1 id="underline-gap"><a href="https://Google.com">Google</a></h1>
</body>
на это есть очень простой ответ
text-decoration: underline;
text-underline-offset: 3px;
text-underline-offset — это собственный метод css. здесь больше о text-underline-offset
Начало в деталях визуального стиля text-decoration:underline
довольно бесполезно, так что вам придется пойти с каким-то взломом удаляет text-decoration:underline
и заменяет его чем-то другим, пока волшебная далекая будущая версия CSS не даст нам больше контроля.
Это сработало для меня:
a {
background-image: linear-gradient(
180deg, rgba(0,0,0,0),
rgba(0,0,0,0) 81%,
#222222 81.1%,
#222222 85%,
rgba(0,0,0,0) 85.1%,
rgba(0,0,0,0)
);
text-decoration: none;
}
- Отрегулируйте значения% (81% и 85%), чтобы изменить расстояние линии от текста.
- Отрегулируйте разницу между двумя значениями%, чтобы изменить толщину линии
- отрегулируйте значения цвета (#222222), чтобы изменить цвет подчеркивания
- работает с несколькими строчными элементами
- работает с любым фоном
Вот версия со всеми проприетарными свойствами для обратной совместимости:
a {
/* This code generated from: http://colorzilla.com/gradient-editor/ */
background: -moz-linear-gradient(top, rgba(0,0,0,0) 0%, rgba(0,0,0,0) 81%, rgba(0,0,0,1) 81.1%, rgba(0,0,0,1) 85%, rgba(0,0,0,0) 85.1%, rgba(0,0,0,0) 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(0,0,0,0)), color-stop(81%,rgba(0,0,0,0)), color-stop(81.1%,rgba(0,0,0,1)), color-stop(85%,rgba(0,0,0,1)), color-stop(85.1%,rgba(0,0,0,0)), color-stop(100%,rgba(0,0,0,0))); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, rgba(0,0,0,0) 0%,rgba(0,0,0,0) 81%,rgba(0,0,0,1) 81.1%,rgba(0,0,0,1) 85%,rgba(0,0,0,0) 85.1%,rgba(0,0,0,0) 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, rgba(0,0,0,0) 0%,rgba(0,0,0,0) 81%,rgba(0,0,0,1) 81.1%,rgba(0,0,0,1) 85%,rgba(0,0,0,0) 85.1%,rgba(0,0,0,0) 100%); /* Opera 11.10+ */
background: -ms-linear-gradient(top, rgba(0,0,0,0) 0%,rgba(0,0,0,0) 81%,rgba(0,0,0,1) 81.1%,rgba(0,0,0,1) 85%,rgba(0,0,0,0) 85.1%,rgba(0,0,0,0) 100%); /* IE10+ */
background: linear-gradient(to bottom, rgba(0,0,0,0) 0%,rgba(0,0,0,0) 81%,rgba(0,0,0,1) 81.1%,rgba(0,0,0,1) 85%,rgba(0,0,0,0) 85.1%,rgba(0,0,0,0) 100%); /* W3C */
text-decoration: none;
}
Обновление: версия SASSY
Я сделал для этого scss-миксин. Если вы не используете SASS, обычная версия выше по-прежнему прекрасно работает...
@mixin fake-underline($color: #666, $top: 84%, $bottom: 90%) {
background-image: linear-gradient(
180deg, rgba(0,0,0,0),
rgba(0,0,0,0) $top,
$color $top + 0.1%,
$color $bottom,
rgba(0,0,0,0) $bottom + 0.1%,
rgba(0,0,0,0)
);
text-decoration: none;
}
тогда используйте это так:
$blue = #0054a6;
a {
color: $blue;
@include fake-underline(lighten($blue,20%));
}
a.thick {
color: $blue;
@include fake-underline(lighten($blue,40%), 86%, 99%);
}
Обновление 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 на:
a {
text-decoration: none;
position: relative;
}
a:after {
content: 'Processing';
color: transparent;
width: 100%;
position: absolute;
left: 0;
bottom: 1px;
border-width: 0 0 1px;
border-style: solid;
}
Смотри мою скрипку.
Вам нужно будет использовать свойство border width и свойство padding. Я добавил анимацию, чтобы она выглядела круче:
body{
background-color:lightgreen;
}
a{
text-decoration:none;
color:green;
border-style:solid;
border-width: 0px 0px 1px 0px;
transition: all .2s ease-in;
}
a:hover{
color:darkblue;
border-style:solid;
border-width: 0px 0px 1px 0px;
padding:2px;
}
<a href='#' >Somewhere ... over the rainbow (lalala)</a> , blue birds, fly... (tweet tweet!), and I wonder (hmm) about what a <i><a href="#">what a wonder-ful world!</a> World!</i>
В качестве альтернативы многострочным текстам или ссылкам, вы можете заключить текст в промежуток внутри элемента блока.
<a href="#">
<span>insert multiline texts here</span>
</a>
тогда вы можете просто добавить border-bottom и отступ на <span>
,
a {
width: 300px;
display: block;
}
span {
padding-bottom: 10px;
border-bottom: 1px solid #0099d3;
line-height: 48px;
}
Вы можете обратиться к этой скрипке. https://jsfiddle.net/Aishaterr/vrpb2ey7/2/
Если ты хочешь:
- многострочный
- пунктирный
- с пользовательской нижней прокладкой
- без обёрток
подчеркните, вы можете использовать фоновое изображение высотой 1 пиксель с repeat-x
а также 100% 100%
позиция:
display: inline;
background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAABCAYAAAD0In+KAAAAEUlEQVQIW2M0Lvz//2w/IyMAFJoEAis2CPEAAAAASUVORK5CYII=') repeat-x 100% 100%;
Вы можете заменить второй 100%
чем-то другим, вроде px
или же em
отрегулировать вертикальное положение подчеркивания. Также вы можете использовать calc
если вы хотите добавить вертикальный отступ, например:
padding-bottom: 5px;
background-position-y: calc(100% - 5px);
Конечно, вы можете также сделать свой собственный шаблон base64 png с другим цветом, высотой и дизайном, например, здесь: http://www.patternify.com/ - просто установите ширину квадрата и высоту в 2x1.
Источник вдохновения: http://alistapart.com/article/customunderlines
Если вы используете text-decoration: underline;
затем вы можете добавить пробел между подчеркиванием и текстом, используя text-underline-position: under;
Подробнее о свойствах text-underline-position вы можете посмотреть здесь
Это то, что я использую:
HTML:
<h6><span class="horizontal-line">GET IN</span> TOUCH</h6>
CSS:
.horizontal-line { border-bottom: 2px solid #FF0000; padding-bottom: 5px; }
Здесь есть несколько отличных решений, но у каждого есть свои проблемы. Смещение подчеркивания текста отличается для каждого браузера. Ответ Squarecandy также работает, но немного сложнее. Использование нижнего края изменяет макет текста и сдвигает его.
Одно из решений для добавления настраиваемого подчеркивания - сделать подчеркивание фоновым изображением, размер которого соответствует размеру текста.
a {
/* Change the source image to account for changes to the text colour. It should be a single column. */
background-image: url(data:image/png;base64,iVBORw__EDITED_OUT___0KGgYII=);
/*background-image: url('underlineImage.png');*/
background-size: 1px 1.1em;
background-repeat: repeat-x;
display: inline;
cursor: pointer;
text-decoration: none;
}
По мере увеличения текста положение остается относительно размера текста. При этом у вас может быть любое подчеркнутое изображение, такое как «ряд звезд» или просто линия.
Приведенный выше пример не включает полную информацию о base64 для создания эффекта. Это отлично работает во всех браузерах, поскольку это фундаментальная вещь и довольно совместима со старыми браузерами.
<a href="#">This _____ is the link</a>
Если фоновое изображение - png с прозрачностью, оно отлично работает поверх других элементов.
Я смог сделать это, используя U (подчеркивание тега)
u {
text-decoration: none;
position: relative;
}
u:after {
content: '';
width: 100%;
position: absolute;
left: 0;
bottom: 1px;
border-width: 0 0 1px;
border-style: solid;
}
<a href="" style="text-decoration:none">
<div style="text-align: right; color: Red;">
<u> Shop Now</u>
</div>
</a>
<span class="underline"> Convittech </span>
<style> .underline{text-underline-offset: 1.4em} </style>
Вы можете сделать это, используя:
text-underline-position: under;
text-underline-offset: {value(px)};
Это свойство сдвинет подчеркивание под вашей ссылкой на указанное вами значение смещения .
Для получения дополнительных ссылок посетите:text-underline-offest | developer.mozilla.org
использовать
text-underline-offset
он работал отлично, вот ссылка на документацию https://developer.mozilla.org/en-US/docs/Web/CSS/text-underline-offset
Что я использую:
<span style="border-bottom: 1px solid black"> Enter text here </span>