[英]Why does this inline-block element have content that is not vertically aligned
遇到一个奇怪的 CSS 问题。 有人可以解释为什么包含内容的框没有垂直对齐吗?
如果您使用类.divPutTextToFixIssue
将文本放在跨度内 - 它会正确对齐。
#divBottomHeader { background-color: #d5dbe0; height: 43px; } .divAccountPicker { display: inline-block; background: blue; width: 200px; height: 40px; } .divAccountData { display: inline-block; background: red; width: 400px; height: 40px; }
<div id="divBottomHeader"> <div class="divAccountPicker"> <span class="divPutTextToFixIssue"></span> </div> <div class="divAccountData"> <span>Balance: $555</span> </div> </div>
默认的vertical-align
值是baseline
将框的基线与父框的基线对齐
注意:您可以通过将vertical-align:baseline
添加到您的.divAccountData
选择器来查看此默认值的实际.divAccountData
。 由于baseline
是默认值,因此对齐方式不变。
您需要将其更改为top
以对齐top
的块,例如:
.divAccountData {
display: inline-block;
background: red;
width: 400px;
height: 40px;
vertical-align: top;
}
基线定义为
大多数字母“坐”的线和下行延伸的线
要解决为什么添加文本似乎可以解决问题的原因是
'inline-block' 的基线是它在正常流中的最后一个 line box 的基线,除非它没有 in-flow line box 或者它的 'overflow' 属性的计算值不是 'visible',在在这种情况下,基线是底部边距边缘。
因此,仅添加一个字符会更改基线,从而导致第二个块以相同的垂直对齐方式出现。 这仅在两个块包含相同数量的行时才有效。 尝试向其中一个块添加更多单词,您会看到,如果不强制第二个块上的vertical-align:top
,它将根据第一个块中存在的文本行数移动。
编辑:找到了一个相关的问题为什么这个内联块元素被向下推?
您需要添加vertical-align: top;
到.divAccountPicker
演示
在你的.divAccountData, .divAccountPicker
类中添加vertical-align:top
像这样
.divAccountData, .divAccountPicker {
vertical-align: top;
}
如果你以前用display:inline-block;
比习惯于全方位vertical-align:top
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.