(这个问题最初引用了w3c学校,我已经更正了该引用)
根据w3c http://www.w3.org/TR/CSS21/visudet.html#propdef-line-heightCSSline-height
值可以设置如下:
<number>
该属性的使用值是该数字乘以元素的字体大小。负值是非法的。计算值与指定值相同。
<percentage>
属性的计算值是该百分比乘以元素的计算字体大小
So line height = font-size × number
or line height = font-size × percentage ÷ 100%
,这应该是相同的。
并且行高是继承的。
但是,我注意到增加字体大小的嵌套元素会导致完全不同的行高,如下所示:
C 列(蓝色)是我所期望的。
参见 jsfiddle http://jsfiddle.net/bkunsr0h/1/.
如果您为了简洁起见而原谅这种 css 语法的混搭,那么 A 列是:
div {line-height:140%;} > div > div «content»
B 栏是:
div {line-height:140%;} > div > div {line-height:140%} «content»
C 列是:
div {line-height:140%;} > div > div {line-height:1.40} «content»
理解的一半
所以看起来像 A 列,行高是计算为长度(例如像素)并设置在外部 div 上font-size
。由此算出,长度值然后继承,这就是为什么当字体大小随后增加时它看起来被压扁的原因。
两者的规格均指乘以字体大小的值。所以这里指的是设置了line-height的元素的字体大小,而不是继承line-height的元素的字体大小。
这样就解释了一半。但 B、C 列仅指定 1.4 或 140% 不同,两者是相同的。一定?!
我预计蓝色 C 列的行为至少适用于 B 列和 C 列。(虽然我认为它也不是 A 列,这很奇怪,但至少我明白这一点。)
我查了一下,Firefox 和 Chromium 也做了同样的事情。
你可以解释吗?