Я знаю, это уже решено, и были запрошены пиксели.Тем не менее, я просто хотел поделиться чем-то ...
Частично подчеркнутые текстовые элементы могут быть легко достигнуты с помощью display:table
или display:inline-block
(я просто не использую display:inline-block
потому что, да, вы знаете, неловкий 4px
пробел).
Текстовые элементы
h1 {
border-bottom: 1px solid #f00;
display: table;
}
<h1>Foo is not equal to bar</h1>
Центрирование , display:table
делает невозможным центрирование элемента с помощью text-align:center
.
Давайте поработаем с margin:auto
...
h1 {
border-bottom: 1px solid #f00;
display: table;
margin-left: auto;
margin-right: auto;
}
<h1>Foo is not equal to bar</h1>
Хорошо , это хорошо, но это не частично .
Как bookcasey уже введено, псевдоэлементы стоят золота.
h1 {
display: table;
margin-left: auto;
margin-right: auto;
}
h1:after {
border-bottom: 1px solid #f00;
content: '';
display: block;
width: 50%;
}
<h1>Foo is not equal to bar</h1>
Смещение , подчеркивание выравнивается по левому краю прямо сейчас.Чтобы отцентрировать его, просто нажмите псевдоэлемент на половину его width
(50% / 2 = 25%
) вправо.
h1 {
display: table;
margin-left: auto;
margin-right: auto;
}
h1:after {
border-bottom: 1px solid #f00;
content: '';
display: block;
margin-left: 25%;
width: 50%;
}
<h1>Foo is not equal to bar</h1>
... как прокомментировал davidmatas , использование margin:auto
иногда более практично, чем вычисление смещения margin
вручную.
Таким образом, мы можем выровнять подчеркивание влево, вправо или по центру (не зная текущего width
), используя одну из следующих комбинаций:
- Влево:
margin-right: auto
(или просто оставить его выключенным) - Средний :
margin: auto
- Вправо :
margin-left: auto
Полный пример
.underline {
display: table;
margin-left: auto;
margin-right: auto;
}
.underline:after {
border-bottom: 1px solid #f00;
content: '';
display: block;
width: 50%;
}
.underline--left:after {
margin-right: auto; /* ...or just leave it off */
}
.underline--center:after {
margin-left: auto;
margin-right: auto;
}
.underline--right:after {
margin-left: auto
}
<h1 class="underline underline--left">Foo is not equal to bar</h1>
<h1 class="underline underline--center">Foo is not equal to bar</h1>
<h1 class="underline underline--right">Foo is not equal to bar</h1>
Элементы уровня блока
Это может быть легко адаптировано, так что мы можем использовать элементы уровня блока.Хитрость заключается в том, чтобы установить высоту псевдоэлементов на ту же высоту, что и их элемент real (просто height:100%
):
div {
background-color: #eee;
display: table;
height: 100px;
width: 350px;
}
div:after {
border-bottom: 3px solid #666;
content: '';
display: block;
height: 100%;
width: 60px;
}
<div></div>