1em 等于字体大小中像素数的 1 倍。所以如果你font-size
是 60px,1em = 60px。如果是 14px,1em = 14px,以此类推。将 设置line-height
为 1em 使其等于像素数的 1 倍。
可能会有一些混淆,因为用户代理样式表设置的默认行高通常在 1.5em 左右,所以 12pxfont-size
会导致 18px line-height
。
em unit
等于使用它的元素的 'font-size' 属性的计算值
来源:http
://www.w3.org/TR/css3-values/#font-relative-lengths
另见:http ://www.w3.org/TR/CSS21/syndata.html#length-units
基于此,您的原始示例正是我希望看到的。作为参考,这是我在 Chrome 中看到的内容:
您的第一行是 60px 高,但第二行的计算值(W3 的术语)是 14px(由应用于它的类决定)。两者都有line-height
1em。因此,line-heights
它们分别是 60px 和 14px。由于这与字体大小相同,因此两条线接触(这可能因字体而异)。
如果您看到重叠的行为,那是另一个问题。
要更改行为,您可以使用不同的行高、填充、边距等。作为旁注,尽管在旧版浏览器中缺乏支持,但rem 单位可能更直观。
有关 CSS 单元的概述,请参阅:http ://css-tricks.com/css-font-size/
字体未与框的边缘对齐
更新的问题/问题
关于更新的问题,请参阅:http ://www.w3.org/TR/css3-fonts/#propdef-font-size其中指出:
请注意,某些字形可能会在其 EM 框外流血。
这在不同程度上发生在我尝试过的不同字体中(有些在 X/Y 上都流血,有些在一个方向上,有些根本没有)。
我不确定是否有任何方法可以改变这种行为,尤其是因为每个浏览器可能使用不同的抗锯齿算法,这可能会稍微改变字符的边缘。
我认为 line-box-contain: glyph
可能是相关的,但我只在编辑草稿中看到它,我确信浏览器支持不存在/不一致。
http://dev.w3.org/csswg/css3-linebox/#line-box-contain