设置div
时,我有display: inline-block
s(混合为空或带文本)的对齐问题。有关示例,请参见下图:
正如您所看到的,带有文本的div
以某种方式与div
的其余部分不对齐。有关我的问题的实例,请参阅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;
}
答案 0 :(得分:3)
原因是vertical-align
的默认值,每个文本都有。它具有初始值baseline
,因此方向在基线上。
最简单,最明智的解决方法是将其设置为vertical-align: top;
:
.actor {
vertical-align: top;
}
演示:JSFiddle
答案 1 :(得分:1)
我更愿意使用
.actor {
vertical-align: middle;
}
top修复了你的问题,但是它将它们全部推到了最前面。底部恰恰相反。从技术上讲,他们仍然以任何一种方式保持一致。那么为什么不在实际中间对齐它们,只是为了防止任何进一步的冲突。