当继承相对行高时,它与元素的font-size无关.为什么?我如何使它相对?

And*_*aus 10 html css em font-size

我有一个全局复位,设置font-sizeline-heightinherit每一个元素:

* {
  font-size:   inherit;
  line-height: iherit; }
Run Code Online (Sandbox Code Playgroud)

因为html,我明确定义它们:

html {
  font-size:   16px;
  line-height: 1.25em; } /* 16×1.25 = 20 */
Run Code Online (Sandbox Code Playgroud)

注意,这line-height是以相对单位设置的.

因为h1,我定义了不同的字体大小:

h1 {
  font-size: 4em; }
Run Code Online (Sandbox Code Playgroud)

我希望h1继承相关line-height1.25em.生成的行高应该等于80px(16×4×1.25).

但在现实中h1line-height保持等于20px(这是相同html的:16×1.25 = 20).

说,我有以下HTML:

<p>foo<br>bar</p>
<h1>foo<br>bar</h1>
Run Code Online (Sandbox Code Playgroud)

结果截图:

相对行高度未正确继承 http://jsfiddle.net/M3t5y/5/

要解决这个问题,我必须定义h1line-height明确等于它继承了相同的价值:

h1 {
  font-size:   4em;
  line-height: 1.25em; }
Run Code Online (Sandbox Code Playgroud)

然后line-height变得正确:

通过显式提供行高而不是继承它来解决问题 http://jsfiddle.net/M3t5y/6/

看起来相对值首先计算为绝对值,然后继承绝对值.或者它可能是相对于父font-size元素而不是元素的继承font-size.

问题

  1. 为什么相对line-height遗传不正确?
  2. 如何使相对line-height继承为相对于元素的值font-size,而不是其父元素?

PS有一个问题,在它的标题类似的问题,但它是在不同的细节.

Alo*_*hci 11

当您使用em行高的值时,将计算行高的值,并且它是子元素也使用的计算值.

如果您使用裸数,则它是用于计算子元素行高的比率.

所以用line-height:1.25;而不是line-height:1.25em;