请参阅下面代码片段的控制台输出。我在示例中使用了 0.5 的乘数,因为它使乘法变得简单,并说明它可以双倍缩小字体大小以及双倍增加字体大小。
我使用 * 通用选择器将字体大小设置为 0.5rem。没有其他设置。 documentElement 字体大小为 8px,正如我所期望的标准 1rem = 16px。但正文字体大小为 4px,即 16 x 0.5 x 0.5。我意识到,出于各种原因,为了设置全局字体大小,我应该使用 html 选择器或正文本身而不是 * 通用选择器,但我想了解为什么会发生这种情况。如果我使用 html 选择器,两个值都会正确设置为 8px。我在 Windows 上的 Chrome 和 Firefox 中对此进行了测试,结果相同。
为什么会出现这种情况?
console.log("doc: " + getComputedStyle(document.documentElement).fontSize);
console.log("body: " + getComputedStyle(document.body).fontSize);
* { font-size: 0.5rem; }
根据这里:
rem 代表 root em,它是一个测量单位,指的是文档根元素的字体大小。它是一个相对单位,这意味着当根的字体大小发生变化时,使用它的所有值都会发生变化。本例中的根元素指的是 html 元素。
浏览器中的默认字体大小是
16px
。
document.documentElement
是 <html>
html{font-size:0.5rem}
= 8 像素
body{font-size:0.5rem}
= 4px(基于html
)