使用 'em' 指定字体大小时,字母显示得可笑(或小)

Letters displayed ridiculously huge (or small) when using 'em' to specify font-size

我的 CSS 字体大小规则出现了一些非常奇怪的行为。我自己可能在做一些愚蠢的事情 [一定是这样 ;-) ],但我希望有人能为我指出。

目前(出于测试目的)我在样式表中只有一个字体大小规则,它规定了所有字体大小,就是这样:

p, div, a, span {
    font-size:3em;
}

现在我知道 3em 是一个相当大的字体大小(据我所知,在大屏幕浏览器上它应该对应于大约 3*16 = 48 像素的宽度),但你在现实中看到的只是荒谬的。看看:http://www.svvreewijkdevaan.nl/nl/

如果您认为菜单中的字体大小(您在页面顶部看到的)很大,请向下滚动一点,您会发现字母变得太大以至于无法辨认不再是字母了。

事实上,在 Firefox 检查工具中,我发现“3em”字母的字体大小被计算为(得到这个)34992px,即近 35000。那到底是什么意思?

事实上,实际(显示的)字体大小(即宽度)似乎在增长 - 至少 - 指数 随着指定的 em 数,而不是按比例增长.因此,例如,如果我将 3em 替换为 3.5em,则显示的字体大小至少变为两倍宽(实际上更多)。相反,如果我将指定的字体大小减小到 1em,我会得到大约 16px 的正常和预期大小。但是如果我把它设为 0.7em,宽度可能会减少到 2px(绝对小得不可读)。

为什么实际(显示的)字体大小不与我的样式表中指定的字体大小(根据 'em')成比例地增长?

em 基于 parent 元素的 font-size。现在,如果您 嵌套 个元素,您在 em 中为其设置了 font-size 的元素彼此 - 这些值得到 相乘 .

  • 要么不要在 em 中嵌套带有 font-size 的元素那么多;
  • 为less元素设置(例如只为divp,让后代继承大小);
  • 或查看 rem 单元。