内联元素忽略行

我无法弄清楚为什么内联元素忽略了某些浏览器中的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


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'指定的高度小于包含框的内容高度,则填充和边框的背景和颜色可能会“流血”到相邻的线框中。

很容易看出你是否考虑line-height <1:http://jsfiddle.net/KKMmK/

链接地址: http://www.djcxy.com/p/58105.html

上一篇: inline elements ignoring line

下一篇: Avoiding writing the same algorithm in multiple different languages