Заголовок с горизонтальной линией с обеих сторон
Я работаю над некоторыми CSS, в которых дизайн требует, чтобы заголовки страниц (заголовки) были центрированы горизонтальными линиями, вертикально центрированными с обеих сторон. Кроме того, на странице есть фоновое изображение, поэтому фон заголовка должен быть прозрачным.
Я сосредоточил заголовок, и я могу использовать псевдокласс для создания строки. Но мне нужно, чтобы линия исчезла, когда она пересекла текст заголовка.
Я рассматривал использование градиента фона, который становится прозрачным, где слова, но поскольку каждый заголовок может быть другой длины, я не знаю, где положить стопы.
Вот CSS:
`
h1 {
text-align: center;
position: relative;
font-size: 30px;
z-index: 1;
}
h1:after {
content: '';
background-color: red;
height: 1px;
display: block;
position: absolute;
top: 18px;
left: 0;
width: 100%;
}
`
Вот где я нахожусь:
http://jsfiddle.net/XWVxk/1/
Можно ли это сделать с помощью CSS без добавления дополнительного HTML?
Ответы
Ответ 1
Посмотрите на это http://blog.goetter.fr/post/36084887039/tes-pas-cap-premiere-edition, вот ваш ответ.
Вот ваш оригинальный код, измененный
h1 {
position: relative;
font-size: 30px;
z-index: 1;
overflow: hidden;
text-align: center;
}
h1:before, h1:after {
position: absolute;
top: 51%;
overflow: hidden;
width: 50%;
height: 1px;
content: '\a0';
background-color: red;
}
h1:before {
margin-left: -50%;
text-align: right;
}
.color {
background-color: #ccc;
}
http://jsfiddle.net/XWVxk/8/
Примечание: статья больше не в сети, вот последняя хорошая архивная версия:
http://web.archive.org/web/20140213165403/http://blog.goetter.fr/post/36084887039/tes-pas-cap-premiere-edition
Ответ 2
понадобилось это несколько дней назад, но принятый ответ не работает в IE.
это то, с чем я столкнулся: работает в каждом крупном браузере ( >= ie8)
jsfiddle: http://jsfiddle.net/gKve7/
HTML:
<h2 class="decorated"><span>My Title</span></h2>
CSS
/* headlines with lines */
.decorated{
overflow: hidden;
text-align: center;
}
.decorated > span{
position: relative;
display: inline-block;
}
.decorated > span:before, .decorated > span:after{
content: '';
position: absolute;
top: 50%;
border-bottom: 2px solid;
width: 592px; /* half of limiter */
margin: 0 20px;
}
.decorated > span:before{
right: 100%;
}
.decorated > span:after{
left: 100%;
}
Ответ 3
Это может сработать:
.floatClear {
clear: both;
}
#wrapper {
text-align: center;
position: relative;
}
#wrapper .line {
border-bottom: 2px solid red;
position: absolute;
width: 100%;
top: 15px;
}
#wrapper .textbox {
position: absolute;
width: 100%;
}
#wrapper .textbox .text {
background-color: white;
margin: 0px auto;
padding: 0px 10px;
text-align: center;
display: inline;
font-size: 24px;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>HTML</title>
<link rel="stylesheet" href="main.css" type="text/css" />
</head>
<body>
<div id="wrapper">
<div class="line"></div>
<div class="textbox">
<div class="text">This is my Title</div>
</div>
</div>
</body>
</html>