【发布时间】:2017-09-04 11:21:55
【问题描述】:
vertical-align:bottom,表示底部的行内框匹配其行框的底部,所以在我的例子中,span2 的行内框是绿色的,其行高为 100px,继承自其父母。它的line-box是黑色的,也有line-height:100px。所以它们是底部对齐的。 见图片:
我已经知道了:
1.vertical-align 仅适用于 inline/inline-block 元素
2.vertical-align 是基于 line-height,而不是容器的高度!
3.在一个line-box中,它的line-height是行高最高的inline box(在我看来,它的inline-element或inline-block元素)的line-height。喜欢图片:
inline-block 元素一切正常,但似乎 inline-element 存在问题。
解释:
父级:height:200px, line-height;100px;
div.child:inline-block,vertical-align bottom;
span1: inline, line-height:继承自父级,即100px
span2: inline, line-height:inherit from parent, 100px, vertical align: bottom.
对我来说,下面代码的行框是这样的(你可以先运行代码):
span2 的奇怪行为!!!如果我将它的垂直对齐设置为 text-top 或 text-bottom,它会变得更加奇怪
我发现有趣的另一件事是,如果我将 span 的显示设置为 inline 块或将 span 的 line-height 设置为正常(这是其字体大小的 1.16),一切正常。
谁能解释一下?谢谢
div.parent {
width: 300px;
background-color: coral;
/*key-part*/
height: 200px;
line-height: 100px;
}
div.child {
width: 50px;
height: 50px;
background-color: yellow;
/*key-part*/
display: inline-block;
vertical-align: bottom;
line-height: normal;
}
.span1 {
background-color: white;
font-size: 50px;
/*key-part*/
vertical-align: middle;
}
.span2 {
background-color: green;
font-size: 12px;
/*key-part*/
vertical-align: top;
}
<body>
<div class="parent">
<div class="child">inline-block div</div>
<span class="span1">Text1</span>
<span class="span2">Text2</span>
</div>
</body>
【问题讨论】:
-
答案没有提到的一个问题是“将 span 的 line-height 设置为正常(其字体大小的 1.16)”,这并不总是正确的。根据MDN,大多数浏览器采用大约 1.2 的字体大小,然后将其四舍五入到整个像素,但这取决于字体。