5

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

查看对齐问题

如您所见,div带有文本的 s 不知何故与其余的 s 不对齐div。有关我的问题的工作示例,请参阅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;
}
4

2 回答 2

3

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

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

.actor {
    vertical-align: top;
}

演示:JSFiddle

于 2015-12-22T18:08:56.000 回答
1

我更喜欢使用

.actor {
    vertical-align: middle;
 }

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

提琴手

于 2015-12-22T18:16:29.207 回答