为什么增加 <span> 的字体大小与其他字体大小不成比例?

Why is increasing the font-size of <span> disproportionate compared to the rest?

我想将以下文本增加到 font-size: 3em,"Some" 和 "text"。当我应用以下内容时:

* {
  font-size: 10px;
}

.foo {
  font-size: 3em;
}
<div>
  <div class="foo"><span>Some</span> text</div>
</div>

<span> 中 "Some" 的大小增长速度比 "text" 高得多。为什么会发生这种情况,我该如何预防?

您应该在整个页面中使用一致的字体尺寸。如果您使用 px,请坚持使用 px。如果您使用 emrem,请坚持使用。现在您正在显示两个不同的测量值(这很可能是问题所在):

* {  font-size: 10px;  }
.foo {  font-size: 3em;  }

由于pixelsem显示不同,改成:

* {  font-size: 10em;  }
.foo {  font-size: 3em;  }

或者,将其更改为两个字体大小元素都使用 px。您的选择。

因为 * 选择器还会选择 所有 ,包括 span 元素,除非有另一个 CSS 规则覆盖它。所以 foo DIV 的内容是 3em(= 3 x 10px),而其中的 span* 规则重置为 10px。

如果你为 div 而不是 * 定义 10px 大小,整个事情看起来不一样:

div {
  font-size: 10px;
}

.foo {
  font-size: 3em;
}
<div>
  <div>Font size defined for DIVs</div>
  <div class="foo"><span>Some</span> text</div>
</div>

* 选择器匹配所有元素。在此 (*) 选择器上定义的规则优先于 parent 元素上定义的规则。

因此,即使默认情况下 font-size 是继承的,.foo 上的 font-size 也不会影响 child 上的 font-size, span.

您可以阅读通用选择器 *,具体了解何时使用它。

默认值 font-size 通常是您要在 html 元素上定义的内容。哪个可以解决您的问题:

html {  font-size: 10px;  }
.foo {  font-size: 3em;  }

这样,从 .foo 继承的 span 的字体大小优先于从 html 继承的 font-size 的字体大小。 作为上述代码的结果,div 中带有 class .foo 的文本和 span 中的文本将具有相同的值 (3em) 和相同的计算值(3 倍 10px)。

如果你这样做了:

html {  font-size: 10px;  }
.foo {  font-size: 3em;  }
span {  font-size: 3em;  }

Span 的值仍为 3em,但计算值将为 10px * 3 * 3 (90px),比 .foo 的字体大小大 3 倍。这是因为 em 是相对于 parent.

font-size