使用CSS和HTML有很多答案可以在某些文本的两侧添加一行,但这些行总是填充容器的整个宽度。我只希望这些行在文本的任何一侧长度为150px,如下所示:
文本将是动态的,因此可能会改变长度并需要居中。
以下是我一直在研究的一些jsfiddle代码:
https://jsfiddle.net/vh0j4q1e/
<div id="container">
#container {
width:800px;
text-align:center;
background-color:#ccc;
}
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: 3px;
content: '';
background-color: red;
}
h1:before {
margin-left: -50%;
text-align: right;
}
任何人都可以帮助改进此代码,以便按照上图显示线条吗?
答案 0 :(得分:6)
您可以在这里使用Flexbox
h2 {
display: flex;
align-items: center;
justify-content: center;
text-transform: uppercase;
}
h2:after, h2:before {
content: '';
width: 150px;
height: 2px;
background: red;
margin: 0 10px;
}
&#13;
<h2>Lorem ipsum</h2>
&#13;
答案 1 :(得分:3)
如果您不想使用Flexbox
,可以将h1
设为inline-block
,然后将:before
-150px偏移到左侧和:after
至100%
#container {
width:800px;
text-align:center;
background-color:#ccc;
margin:0 auto;
}
h1 {
position: relative;
font-size: 30px;
display: inline-block;
padding:0 15px;
}
h1:before, h1:after {
position: absolute;
top: 50%;
width: 150px;
height: 3px;
content: '';
background-color: red;
left:-150px;
}
h1:after {
left: 100%;
}
&#13;
<div id="container">
<h1>TEXT HEADING</h1>
</div>
&#13;
答案 2 :(得分:2)
这是另一种方法。我没有对它进行过多次测试,但它应该是非常跨浏览器的
#container {
width:800px;
max-width: 100%;
text-align:center;
background-color:#ccc;
}
h1 {
position: relative;
font-size: 30px;
z-index: 1;
overflow: hidden;
text-align: center;
}
h1:before, h1:after {
content: '';
width: 150px;
height: 3px;
display:inline-block;
background-color: red;
vertical-align: 0.3em;
margin: 0 -100%;
}
h1:before {
margin-right: 0.75em;
}
h1:after {
margin-left: 0.75em;
}
}
<div id="container">
<h1>TEXT HEADING</h1>
</div>
答案 3 :(得分:0)
在这里,我把它包装在另一个DIV中以进行居中并给予标题更多的空间(例如):
https://jsfiddle.net/vh0j4q1e/
<div align="center">
<div id="container">
<h1>TEXT HEADING</h1>
</div>
</div>
#container {
width:800px;
text-align:center;
background-color:#ccc;
}
h1 {
position: relative;
font-size: 30px;
z-index: 1;
overflow: hidden;
text-align: center;
}
h1:before, h1:after {
margin: 0px 0px 0px 15px;
position: absolute;
top: 51%;
overflow: hidden;
width: 50%;
height: 3px;
content: '';
background-color: red;
}
h1:before {
margin-left: -52%;
text-align: right;
}