当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-height
的normal
值(通过默认设置或通过显式设置)是"正常的":浏览器期望使用适合所使用字体的值。这种变化不应该令人惊讶:它在定义中就包含了。
这应该有助于解决这样的问题:您声明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"覆盖它
确实,不同浏览器的标准行高不同