html {font-size: 62.5%;} 似乎是将基本字体大小设置为 10px 的标准方法。
例如,
html {font-size: 62.5%;} /* 10px */
body {font-size: 1.5rem;} /* 15px */
Run Code Online (Sandbox Code Playgroud)
但这会产生对浏览器字体大小 16px 的依赖。从长远来看,这似乎不可靠......为什么不......
html {font-size: 1px;} /* 1px */
body {font-size: 15rem;} /* 15px */
Run Code Online (Sandbox Code Playgroud)
这有技术问题吗?它看起来更干净,更可靠。为什么我没有看到人们这样做?
曾几何时,只有 IE 和文本缩放。其他浏览器出现并放弃了这个概念,转而支持缩放整个视口。毕竟,如果您很难阅读文本,那么您可能也很难看到图像和其他非文本元素。
当您使用相对字体大小时,在某些时候它们必须转换为屏幕上的基本像素。默认修饰符大体上预计为 16px,您可以将其想象为 1 级以上元素的声明<html>。任何基本修改(例如62.5%在主体上将 1 个相对单位设置为等于 10 像素)都会缩小该值。
考虑到这一点,您实际上要做的就是将事情掌握在自己手中,覆盖上面的浏览器基本字体大小<html>并将其设置为 1px 值,从而导致 1 em/rem 始终等于正文中的 1px。但是,这是有代价的 - 由于您的直接像素值,浏览器不再能够传播它自己的基本字体值,因此用户可能设置的任何字体大小设置都会被您的声明忽略。换句话说,使用 1px 技巧会禁用浏览器的纯字体大小缩放。但与此同时,仅字体大小缩放在其意图上仍然存在根本缺陷(请查看带有缩放字体的 google.com 结果)。
如果您想保留浏览器仅控制字体大小缩放的能力,同时使用 1rem = 1px,您可能需要这个。编辑:我应该注意到,由于最小字体大小设置(默认为 6px),这在 Chrome 中会出现问题。填充和边距会将该值缩小为最小值。
html {
font-size: 6.25%;
}
body {
font-size: 16rem;
}
Run Code Online (Sandbox Code Playgroud)