短线是侧面文字

时间:2016-04-13 17:20:49

标签: html css

使用CSS和HTML有很多答案可以在某些文本的两侧添加一行,但这些行总是填充容器的整个宽度。我只希望这些行在文本的任何一侧长度为150px,如下所示:

example of what the lines should look like

文本将是动态的,因此可能会改变长度并需要居中。

以下是我一直在研究的一些jsfiddle代码:

https://jsfiddle.net/vh0j4q1e/

<div id="container">

TEXT HEADING

#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;
}

任何人都可以帮助改进此代码,以便按照上图显示线条吗?

4 个答案:

答案 0 :(得分:6)

您可以在这里使用Flexbox

&#13;
&#13;
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;
&#13;
&#13;

答案 1 :(得分:3)

如果您不想使用Flexbox,可以将h1设为inline-block,然后将:before -150px偏移到左侧和:after至100%

&#13;
&#13;
#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;
&#13;
&#13;

https://jsfiddle.net/azizn/vh0j4q1e/1/

答案 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;
}