Flexbox - 内容垂直居中的分隔线

Sol*_*gon 1 html css flexbox

所以我有一个容器,我想把东西从左到右均匀地隔开,并垂直居中。如果内容变长,我还想在内容之间添加垂直分隔线。

如果内容不是垂直居中,这个分隔符就可以正常工作:

section {
  display: flex;
  flex-direction: row;
  flex: 1;
  margin: 0 -8px;
}

section > * {
  margin: 0 8px;
}

.divider {
  width: 2px;
  margin: 6px 0;
  background: blue;
}

.item {
  flex: 1;
  background: orange;
}
Run Code Online (Sandbox Code Playgroud)
<section>
  <div class="item">
    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit</p>
  </div>
  <div class="divider"></div>
  <div class="item">
    <p>Potato</p>
  </div>    
  <div class="divider"></div>
  <div class="item">
    <p>Markup</p>
  </div>
</section>
Run Code Online (Sandbox Code Playgroud)

但是当我添加时align-items: center;,分隔符消失了。

section {
  display: flex;
  flex-direction: row;
  flex: 1;
  margin: 0 -8px;
  align-items: center;
}

section > * {
  margin: 0 8px;
}

.divider {
  width: 2px;
  margin: 6px 0;
  background: blue;
}

.item {
  flex: 1;
  background: orange;
}
Run Code Online (Sandbox Code Playgroud)
<section>
  <div class="item">
    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit</p>
  </div>
  <div class="divider"></div>
  <div class="item">
    <p>Potato</p>
  </div>    
  <div class="divider"></div>
  <div class="item">
    <p>Markup</p>
  </div>
</section>
Run Code Online (Sandbox Code Playgroud)

如何取回分隔符并使我的内容垂直居中?

Nen*_*car 5

设置时align-items: center,弹性项目的高度由其内容决定,因此您可以align-self: stretchdivider元素上使用。

您还可以align-self: centeritem元素上使用并align-items: center从 flex-container 中删除。演示

您可以对边距DEMO执行相同操作

section {
  display: flex;
  flex-direction: row;
  flex: 1;
  margin: 0 -8px;
  align-items: center;
}
section>* {
  margin: 0 8px;
}
.divider {
  width: 2px;
  margin: 6px 0;
  background: blue;
  align-self: stretch;
}
.item {
  flex: 1;
  background: orange;
}
Run Code Online (Sandbox Code Playgroud)
<section>
  <div class="item">
    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit</p>
  </div>
  <div class="divider"></div>
  <div class="item">
    <p>Potato</p>
  </div>
  <div class="divider"></div>
  <div class="item">
    <p>Markup</p>
  </div>
</section>
Run Code Online (Sandbox Code Playgroud)