一尘不染

为什么此内联块元素的内容未垂直对齐

html

遇到了一个奇怪的CSS问题。有人可以解释为什么包含内容的框未垂直对齐吗?

如果您将文本放在class的范围内.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>

阅读 318

收藏
2020-05-10

共1个答案

一尘不染

默认vertical-align值是baseline

将框的基线与父框的基线对齐

注意:您可以通过添加vertical-align:baseline.divAccountData选择器中来查看此默认值。由于baseline是默认设置,因此对齐方式保持不变。

您需要对其进行更改top以使块在顶部对齐,例如:

.divAccountData {
    display: inline-block;
    background: red;
    width: 400px;
    height: 40px;
    vertical-align: top;
}

基准定义为

大多数字母“坐着”且下级延伸到其下的线

解决 为什么 添加文本似乎可以解决问题的原因是

“ inline-block”的基线是正常流中其最后一个线框的基线,除非它没有流入流线框,或者如果其“ overflow”属性的计算值不是“ visible”,则在这种情况下,基线是下边距。

因此,仅添加一个字符会更改基线,从而导致第二个块以相同的垂直对齐方式显示。 当两个块包含相同数量的行时,此方法
有效。尝试在一个块中添加更多单词,您会发现在不强制vertical-align:top第二个块的情况下,它会根据第一个块中存在多少行文本而移动。

2020-05-10