CSS 混合文本和空文本的内联块换行问题 div

CSS inline-block wrap issue with mixed text and empty div

当设置 display: inline-block 时,我有一个 divs 的对齐问题(混合空或与文本)。有关示例,请参见下图:

如您所见,带有文本的 divdiv 的其余部分不对齐。有关我的问题的工作示例,请参阅 this JSFiddle。

我已经知道解决此问题的一些方法,但我想了解为什么会这样。我的目标是通过最小的 CSS 更改(可能没有 HTML 修改)来解决这个问题。

HTML

<div class="bar">
  <div class="actors">
    <div class="actor" style="background-image: url('http://lorempixel.com/32/32/')"></div>
    <div class="actor" style="background-image: url('http://lorempixel.com/32/32/')"></div>
    <div class="actor num"><span>5</span></div>
    <div class="actor" style="background-image: url('http://lorempixel.com/32/32/')"></div>
    <div class="actor num"><div>6</div></div>
  </div>
  <div class="lol">lol</div>
</div>

CSS

.bar {
  height: 40px;
  border-bottom: 1px solid #000;
}
.actors {
  float: left;

}
.actor {
  display: inline-block;
  width: 34px;
  height: 34px;

  background-color: gray;
  border-radius: 16px;
  border: 1px solid red;
}
.num {

}
.lol {
  float: right;
}

原因是vertical-align的默认值,每个文本都有。它具有初始值 baseline,因此方向在基线上。

修复它的最简单和最聪明的方法是将其设置为 vertical-align: top;:

.actor {
    vertical-align: top;
}

演示:JSFiddle

我更愿意使用

.actor {
    vertical-align: middle;
 }

top 在这里解决了您的问题,但它会将它们全部推到行首。底部则相反。从技术上讲,它们仍然以任何一种方式对齐。那么为什么不将它们对齐在实际的中间,只是为了防止任何进一步的冲突。

JFiddle