<div>
<div class="inline-block-box">
<div style="display: inline-block;font-size: 16px;line-height: 1">inline-block</div>
<div style="display: inline-block;font-size: 16px;line-height: 1">inline-block</div>
</div>
<div class="inline-flex-box">
<div style="display: inline-flex;font-size: 16px;line-height: 1">inline-flex</div>
</div>
</div>
预期效果是,inline-block-box
和 inline-flex-box
两个元素的高度都是 16px;实际上两者都是 24px:
原因在于:虽然我们为文本设置了字号 16px,行高 1,最终 div
高度为 16px。但父元素继承了 html
的 1.5 倍行高,inline-block-box
和 inline-flex-box
的实际高度要乘以 1.5,也就是 24px。
要避免此类问题也很简单,如果要固定行内元素的高度,直接在其父元素指定字号和行高即可。
修复后的示例代码如下:
<div>
<div class="inline-block-box" style="font-size: 16px;line-height: 1">
<div style="display: inline-block;">inline-block</div>
<div style="display: inline-block;">inline-block</div>
</div>
<div class="inline-flex-box" style="font-size: 16px;line-height: 1">
<div style="display: inline-flex;">inline-flex</div>
</div>
</div>
使用 flex
布局:
<div>
<div class="inline-block-box" style="display: flex">
<div style="display: inline-block;">inline-block</div>
<div style="display: inline-block;">inline-block</div>
</div>
<div class="inline-flex-box" style="display: flex">
<div style="display: inline-flex;">inline-flex</div>
</div>
</div>
同样也可以避免此问题。