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

标签 css

当 CSS line-height 属性设置为 normal 时,我观察到一些相当不一致的 HTML 页面呈现行为。我还找到了 blog post by Eric Meyer其中讨论了 line-height: normal; 的不同不一致,这里仅引用一个:

Here’s the punchline: the effects of declaring line-height: normal not only vary from browser to browser, which I had expected—in fact, quantifying those differences was the whole point—but they also vary from one font face to another, and can also vary within a given face.

在我的案例中,我观察到如果 line-height 设置为 normal,添加一些 Unicode 符号(例如信封符号“☉”)会改变行 block 高度.设置 line-height: 1.2; 解决了这个问题。

我的问题是:是否有任何理由使用 line-height: normal;?它的行为如此不可预测。

最佳答案

原则上,line-heightnormal 值(通过默认设置或显式设置)是“normal”:浏览器应该使用一个值适用于正在使用的字体。这种变化不足为奇:它隐含在 definition 中.

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

在实践方面,浏览器可能无法很好地选择该值;它通常有点太小了。在排版方面,应​​根据几个考虑因素选择行高,不仅是字体,还包括文本类型(例如,带有很多变音符号的文本需要更大的行高),尤其是度量(列宽, line length):长的行需要更大的行高。

所以一般情况下,设计者最好根据不同的方面来设置行高。

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

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

关于css - "line-height: normal;"是个坏主意吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14277889/

相关文章:

css - 隐藏 SPAN 溢出

html - 将 border-bottom 移到离文本更远的地方

html - 为什么我的属性选择器不起作用?

添加边框时 CSS 元素阻止移动

javascript - 具有重复背景的自定义高亮文本

html - 如何在 HTML 和 CSS 中设置交替的 div?

CSS:小 float 问题

html - 纯 CSS 选项卡容器事件选项卡

css - 手写字符之间的联系

html - HTML/CSS 中的响应表,第一个单元格充当整行