遇到了一个奇怪的CSS问题。有人可以解释为什么包含内容的框未垂直对齐吗?
如果您将文本放在class的范围内.divPutTextToFixIssue-它将正确对齐。
.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
将框的基线与父框的基线对齐
注意:您可以通过添加vertical-align:baseline到.divAccountData选择器中来查看此默认值。由于baseline是默认设置,因此对齐方式保持不变。
vertical-align:baseline
.divAccountData
您需要对其进行更改top以使块在顶部对齐,例如:
top
.divAccountData { display: inline-block; background: red; width: 400px; height: 40px; vertical-align: top; }
基准定义为
大多数字母“坐着”且下级延伸到其下的线
解决 为什么 添加文本似乎可以解决问题的原因是
“ inline-block”的基线是正常流中其最后一个线框的基线,除非它没有流入流线框,或者如果其“ overflow”属性的计算值不是“ visible”,则在这种情况下,基线是下边距。
因此,仅添加一个字符会更改基线,从而导致第二个块以相同的垂直对齐方式显示。 仅 当两个块包含相同数量的行时,此方法 才 有效。尝试在一个块中添加更多单词,您会发现在不强制vertical-align:top第二个块的情况下,它会根据第一个块中存在多少行文本而移动。
vertical-align:top