Отключить подчеркивание для символов нижнего регистра: g q p j y?
Иногда вы не хотите, чтобы подчеркивание слепо прорезало подчеркнутое название страницы!
Есть ли способ автоматически элегантно отключить подчеркивание для некоторых символов в нижней строке?
В этих случаях лучше не подчеркивать эти строчные буквы, например {g,q,p,j, y}
![enter image description here]()
CSS:
h1{ text-decoration: underline; }
PAGE TITLE:
George quietely jumped!
A) Есть ли способ достичь такого деликатного и расширенного правила стилизации?
B) Какие еще латинские символы мы хотим подчеркнуть?
C) Как установить толщину/тонкость подчеркивания?
Ответы
Ответ 1
вы можете также подделать подчеркивание с помощью border-bottom. это может работать для отдельных строк, и если свойства экрана позволяют элементу сжиматься по контенту. (просто избегайте блока).
здесь пример с display:table
, чтобы разрешить центральный текст и строку прерывания до и после: http://codepen.io/gc-nomade/pen/vJoKB/
Какая идея?
- установка меньшей высоты строки, чем размер шрифта, приводит к переполнению текста из его контейнера.
- нарисовать нижнюю границу для подчеркивания текста
- SVG предлагает
stroke
, в CSS, мы можем сделать что-то подобное, увеличивая text-shadow
с тем же цветом, что и фон.
- DEMO, вы можете даже установить другой цвет для подчеркивания simili и добавить отбрасывающую тень.
![result]()
В более старом браузере вы потеряете параметр box-shadow
, но вы по-прежнему можете использовать стили double
, groove
или ridge
border
с разным цветом, чем текст.
Спасибо @PatNewell за эту ссылку: https://medium.com/designing-medium/7c03a9274f9
Ответ 2
В этом решении используется jQuery
, чтобы автоматизировать перенос букв в подчеркивание в теге <span>
.
DEMO
Как родители с text-decoration:underline
"переопределяют" детей с text-decoration:none;
(см. здесь). Метод состоит в том, чтобы обернуть только целевые буквы (подчеркивания) с помощью <span class="underline">
и применить text-decoration:underline;
к этому классу.
Выход:
![no underline on selected characters with jQuery]()
Знаки, которые не будут подчеркнуты:
g j p q y Q @ { _ ( ) [ | ] } ; , § µ ç /
HTML:
<h1 class="title">George quietely jumped!</h1>
CSS:
.underline {
text-decoration:underline;
}
jQuery:
$('.title').each(function () {
var s = '<span class="underline">',
decoded;
$(this).prop('innerHTML', function (_, html) {
s += html.replace(/&/g, '&').replace(/(g|j|p|q|y|Q|@|{|_|\(|\)|\[|\||\]|}|;|,|§|µ|ç|\/)/g, '</span>$1<span class="underline">');
s += '</span>'
$(this).html(s);
});
});
Ответ 3
Модуль оформления текста Уровень 3 вводит text-decoration-skip
Это свойство определяет, какие части содержимого элемента имеют любой текст украшение, влияющее на элемент, должно пропустить.
Вы можете достичь желаемого поведения, установив его на ink
:
Пропустить, где изображены глифы: прерывать линию украшения, чтобы позволить форма текста показывает, где украшение текста было бы иначе пересечь глиф. UA должен пропустить небольшое расстояние до с обеих сторон контура глифа.
![enter image description here]()
h1 {
text-decoration: underline;
text-decoration-skip: ink;
}
<h1>George quietely jumped!</h1>
Ответ 4
Если вы знаете свой цвет фона (при этом в этом случае белый), сделайте снимок:
h1 {
line-height: 0.9em;
border-bottom: 1px solid black;
text-shadow: 2px 2px #fff, -2px 2px #fff;
}
идея:
- используйте border-bottom и уменьшите высоту линии, чтобы вытащить нижнюю часть модели ящика h1.
- примените две не размытые текстовые тени, которые будут отображаться за вашим текстом, и над вашим граничным дном. (Первый в этом примере - 2px вниз и влево, второй - 2px вниз и вправо.)
скрипт: http://jsfiddle.net/pmn4/a5LZE/
fyi - браузеры не играют с текстовой тенью; используйте его консервативно!
Ответ 5
Было бы больно в заднице, но я бы сделал класс "underline", а затем зашел и сделаю это вручную
HTML
<h1><span class="underline">Ver</span>g<span class="underline">eten Kanalen</span></h1>
CSS
.underline{text-decoration:underline;}
Ответ 6
Вот мое решение:
Рабочая скрипта
CSS
h1, h2 {
background-image: linear-gradient(to top, transparent 0px, transparent .15em, red .15em, red calc(.15em + 1px), transparent calc(.15em + 1px), transparent 100%);
text-shadow: 0px -2px 3px white, 0px -2px 3px white, 0px -2px 3px white, 0px -2px 3px white, 0px -2px 3px white, 0px -2px 3px white;
}
Ответ 7
Посмотрите на text-decoration-skip-ink
свойство CSS. Это может указать, как подчеркивания и подчеркивания отображаются при прохождении над символами по возрастанию и спуску.
h1 {
text-decoration: black underline;
text-decoration-skip-ink: auto;
}
<h1>George quietely jumped!</h1>