根据上图(来自“CSS The Definitive Guide 3rd Edition”),如果我们没有指定line-height
,则内联框的计算高度等于内容区域加上前导,而不是高度仅由内容区域决定。
再次根据“CSS The Definitive Guide 3rd Edition”,用户代理可以选择以下两种方式之一来计算内容区域高度:
在非替换元素中,内容区域可以是两件事之一, CSS2.1规范允许用户代理选择哪一个。 内容区域可以是每个人的em框所描述的框 元素中的字符串在一起,或者它可以是框 由元素中的字符字形描述。
我使用一个简单的页面来测试浏览器之间的内联元素高度计算:
<!DOCTYPE html>
<html>
<head>
<title></title>
<style>
span {
font-size: 15px;
}
</style>
</head>
<body>
<span>MERLIN</span>
</body>
</html>
结果如下所示,span
高度值由浏览器开发人员工具提供。
(明确指定line-height
到15px仍会导致相同的结果)
为什么三种浏览器之间的计算高度不同?根据规范,用户代理只能选择两种方式(em框或字符字形)。
这是否意味着我无法控制内联非替换元素的高度?
答案 0 :(得分:3)
根据规范,用户代理只能选择两种方式(em框或字符字形)。
但它也says:
内容区域的高度应基于字体,但此规范未指定方式。
因此,仍然没有100%明确定义如何计算高度。请注意,不同的浏览器具有不同的字体渲染算法,这也可能会影响这些计算。