使用flexbox和伪元素构建直通式样式

时间:2018-03-20 17:38:59

标签: html css css3 flexbox pseudo-element

我正在构建一个可以跨越多行的直通标题。使用下面的示例代码,是否可以以不需要左右div的方式编写CSS?它们可以作为伪类添加到我的头类中吗?

CodePen

.container {
  box-sizing: border-box;
  display: flex;
  place-content: center space-evenly;
  align-items: center;
}

.line {
  flex: 1;
  height: 2px;
  background: black;
}

.header {
  font-size: 50px;
  margin: 0 30px;
  text-align: center;
}

.header-broken:after {
  content: '';
  display: -webkit-inline-flex;
  display: -ms-inline-flexbox;
  display: inline-flex;
  width: 50px;
  height: 5px;
  flex: auto;
  width: 100%;
  height: 2px;
  background: black;
}
<div class="container">
  <div class="line"></div>
  <div class="header">Normal Title<br>fdasfsaf</div>
  <div class="line"></div>
</div>

2 个答案:

答案 0 :(得分:0)

只需一个div即可完成,请参阅下面的示例,根据间距需要为伪元素添加一些边距。

.container {
  display: flex;
  text-align: center;
}

.container:before,
.container:after {
  content: "";
  flex: 1;
  background: linear-gradient(black, black) center / 100% 1px no-repeat;
}
<div class="container">
  Normal Title<br>fdasfsaf
</div>

答案 1 :(得分:0)

您也可以试试这个。

HTML:

<div class="container">
  <div class="header">
     <h1>Normal Title
        <br>fdasfsaf
     </h1>
  </div>
</div>

CSS:

.container {
        display: flex;
        text-align: center;
    }

    .header {
        flex: 1;
    }

    .header h1 {
        font-size: 50px;
        margin: 0 30px;
        text-align: center;
        background-color: #fff;
        display: inline-block;
    }

    .header:after {
        content: '';
        border-bottom: 1px solid #000;
        display: block;
        margin-top: -58px;
    }