【问题标题】:css - inline elements ignoring line-heightcss - 忽略行高的内联元素
【发布时间】:2012-03-25 10:31:06
【问题描述】:

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

这是一个例子:

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

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

我读到的所有内容都说它应该设置为行高,所以我无法弄清楚这一点。这是我在 W3C 上读到的内容:

计算line box中每个inline-level box的高度。对于替换元素、inline-block 元素和 inline-table 元素,这是它们的边距框的高度; 对于内联框,这是它们的“行高”。

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

【问题讨论】:

  • 快速测试表明,在 Firefox 中跨度确实有一个 26px 的计算 line-height。你是怎么测试的?
  • 我找不到办法让它不起作用...jsfiddle.net/RnDDQ
  • 我添加了一个 1px 的边框来显示元素的物理尺寸。然后我打开 Photoshop 并测量像素。 Firefox 和 Chrome 显示适当的行高,但元素的高度更大。在 Chrome 中,您不需要边框......只需使用开发工具来突出显示元素。
  • @animuson 在您的 jsfiddle 示例中,Chrome 将小尺寸的高度显示为 29px,而不是 26px。
  • 这是从 2000 年开始的,但仍然非常有趣...... David Baron 对内联高度和行高的解释:dbaron.org/css/2000/01/dibm-20000113

标签: html css


【解决方案1】:

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

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

[内联元素]内容区域的高度应该基于字体,但本规范没有具体说明如何。例如,UA 可以使用 em-box 或字体的最大升序和降序...

不同的浏览器只是在这里使用不同的方法。请参阅http://jsfiddle.net/ejqTD/1/ 以获取说明。注意 webkit 如何渲染更高的内容区域,但 line-height 仍然正确。

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

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

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

【讨论】:

  • 你还知道line-height 是如何影响inline-block 甚至flex 元素的吗?
猜你喜欢
  • 1970-01-01
  • 2012-11-06
  • 1970-01-01
  • 2013-07-24
  • 2020-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多