代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
html {
font-size: 100px;
}
span {
font-size: 12px;
line-height: 12;
}
</style>
</head>
<body>
<div>
<span>dsflfij</span>
</div>
</body>
</html>
div的高度变得很高
你的 span 的 line-height 值设置的是 12。
按照规定,当行高设为数字时,行高的计算值就是自身字体大小的相应倍数,具体到你的问题中就是 12x12=144,这样的话 div 的高度就应该是 144px(不算边框) 才对,但我们通过审查元素工具可以看到 div 的最终高度是 161px(不算边框)。
这其实涉及到行框高度的计算。div 的高度就是其内部行框的高度,而行框的高度是行框内最高点和最低点之间的距离(The line box height is the distance between the uppermost box top and the lowermost box bottom)。我们来看下面的demo。为了方便观察把 span 元素变成行块元素(有高度),背景颜色设为淡灰色,并且在 span 后面放一个字母 x ,x 底边所在的线就可以看做是 span 所在行框的基线。
http://codepen.io/zengkan0703...
当我们把 span 的 vertical-align 值设为 middle,如 box2 ,可以看到行框的最高点和最低点都是 span 元素的最高点和最低点,div 的最终高度就是理想的 144px。 当 span 的 vertical-align 值为默认的 baseline 时,如 box1, 为了跟行框的基线对齐,span 元素会下移,行框的最高点变成了匿名行内框 x 的最高点,最低点还是 span 的最低点,所以行框的高度就会变大为 161px。