css - 忽略行高的内联元素

时间:2012-03-07 21:19:10

标签: html css

我无法弄清楚为什么内联元素会在某些浏览器中忽略line-height(Chrome和Firefox会忽略它,但IE9不会忽略它)。

以下是一个例子:

<small style="line-height: 1; font-size: 26px;">Hello, World</small>

预期的结果是元素高度为26px,但是,它被设置为31px。如果我将元素的显示设置为块,则高度正确设置为26px。

我读到的所有东西都说应该设置为线高,所以我无法想出这个。这是我在W3C上读到的内容:

  

计算行框中每个内联级别框的高度。对于替换元素,内联块元素和内联表元素,这是其边距框的高度; 对于内联框,这是他们的“行高”

来源:http://www.w3.org/TR/CSS2/visudet.html#line-height

1 个答案:

答案 0 :(得分:4)

webkit检查员显示的内容(以及您在PhotoShop中测量的内容)是内容区域的尺寸。

请参阅http://www.w3.org/TR/CSS2/visudet.html#inline-non-replaced

  

内联元素[内联元素]的高度应基于字体,但此规范未指定方式。例如,UA可以使用em-box或字体的最大上升和下降...

不同的浏览器只是在这里使用不同的方法。有关说明,请参阅http://jsfiddle.net/ejqTD/1/。请注意webkit如何呈现更高的内容区域,但行高仍然正确

在这种情况下内容区域超出了行,这是允许的:http://www.w3.org/TR/CSS2/visudet.html#leading

  

如果'line-height'指定的高度小于所包含框的内容高度,则填充和边框的背景和颜色可能会“渗透”到相邻的行框中。

很容易看出你是否考虑了行高&lt; 1:http://jsfiddle.net/KKMmK/