"line-height: normal;"是个坏主意吗?

  • 本文关键字:line-height normal css
  • 更新时间 :
  • 英文 :


当CSS line-height属性设置为normal时,我观察到一些相当不一致的HTML页面呈现行为。我还发现了Eric Meyer的一篇博客文章,其中讨论了line-height: normal;的不同不一致性,这里只是一个引用:

这里是关键:声明line-height: normal的效果不仅因浏览器而异,这是我所期望的——事实上,量化这些差异才是重点——,而且它们也因字体而异,也可以在给定的字体中变化。

在我的例子中,我观察到添加一些Unicode符号,例如信封符号";;)",如果line-height设置为normal,则会改变行块高度。设置line-height: 1.2;可以解决这个问题。

我的问题是:是否有任何理由使用line-height: normal; ?

原则上,line-heightnormal值(通过默认设置或通过显式设置)是"正常的":浏览器期望使用适合所使用字体的值。这种变化不应该令人惊讶:它在定义中就包含了。

这应该有助于解决这样的问题:您声明font-family: a, b, c, d, sans-serif,但您不知道每台计算机中可用的特定字体(如果有的话),或者默认的sans-serif字体可能是什么。这些字体可能需要不同的行高,以获得良好的外观。浏览器知道它使用的是哪种字体,所以它可以从它的内部表中为它挑选一个行高。

实际上,浏览器可能无法很好地选择值;它通常有点太小了。在排版方面,行高的选择应该基于几个考虑因素,不仅是字体,还有文本的类型(例如,有很多变音符号的文本需要更大的行高),特别是尺寸(列宽,行长):长行需要更大的行高。

所以一般来说,最好由设计者来设置行高,同时考虑到不同的方面。

这也避免了你所描述的问题:当一行包含来自不同字体的字形时,每种字体可能有不同的默认行高。例如,信封符号仅包含在几种字体中,因此浏览器很可能被迫从与您声明的字体不同的字体中选择它。

这就是在混合字体时导致行间距不均匀的原因。字形的高度并不重要,重要的是字体的行高。例如,添加一个句号"。"在Cambria Math字体中,当可用时,会导致巨大的行间距-除非您将line-height设置为特定值。

是否有理由使用line-height: normal;

是的-这个属性在那里,所以你可以使用它,当你特别需要重置行高为浏览器默认值,如果你已经在父元素的某个地方设置了它。

你为什么要这样做,什么时候这样做取决于你正在实现什么,以及你是否关心跨浏览器像素完美的设计。

"normal"是"line-height"的默认值。您显式地声明line-height: normal来覆盖。

的例子:

h1 {
    line-height: 150%;
}
h1.normal {
    line-height: normal;
}

如果你看一下上面的代码片段,我已经为h1标签声明了150%的行高。如果我想要一个特定的h1标签正常运行[浏览器特定的line-height],然后我使用"normal"覆盖它

确实,不同浏览器的标准行高不同

最新更新