Итак, я пытаюсь сделать простой заголовок, где у меня есть текст, выровненный по центру, с границей 2px, проходящей под этим.
Код, который у меня есть, должен работать отлично в любом другом браузере, кроме firefox, который выравнивает границу справа от страницы, как если бы начало границы выравнивалось по центру. Если я удаляю центр выравнивания текста, граница будет помещена отлично, но текст выравнивается влево, очевидно. Почему Firefox делает это?
CSS:
.my-title {
position: relative;
margin-bottom: 70px;
padding-bottom: 15px;
}
.my-title:after {
position: absolute;
bottom: 0;
height: 2px;
background-color: #ffd500;
content: "";
width: 100%;
}
.align-center {
text-align: center;
}
Html:
<div class="row">
<div class="col-xs-12">
<hgroup class="my-title align-center">
<h1>Header</h1>
<h2>Sub-Header</h2>
</hgroup>
</div>
</div>
поскольку ваш псевдоэлемент находится в position:absolute;
он не имеет ширины в потоке вашего контента и следует text-align:center;
установленный на родительском (как абсолютный он имеет, в потоке содержимого, 0 для высоты и ширины).
3 возможности:
left:0;
независимо от того, какой текст будет выровнен по родительскому элементу, он будет нарисован из левых координаторов.display:block;
поэтому он ведет себя как элемент блока и плохо игнорирует text-align
по text-align
, он будет делать линию прерывания и будет нарисован left
или right
(следует за direction/dir
документа)..my-title {
position: relative;
margin-bottom: 70px;
padding-bottom: 15px;
}
.my-title:after {
height: 2px;
background-color: #ffd500;
content: "";
width:100%;
display:inline-block;
vertical-align:bottom;
}
.align-center {
text-align: center;
}
Попробуй это:
@-moz-document url-prefix()
{
.my-title
{
position: relative;
margin-bottom: 70px;
padding-bottom: 15px;
}
.my-title:after
{
position: absolute;
bottom: 0;
height: 2px;
background-color: #ffd500;
content: "";
width: 100%;
}
.align-center
{
text-align: center;
}
}
<hgroup />
поскольку оно было исключено из спецификации HTML5.