应在 html 元素上设置基础 font-size(如 16px),而非 body,因为 rem 以 html 为根基准;body 可设 font-size: 1rem 以继承并确保默认文本大小;推荐用 :root 自定义属性统一管理,便于响应式与主题切换。

统一管理页面整体字号,最常用也最有效的方式就是通过 body 设置基础 font-size,再配合相对单位(如 rem)来控制其他元素的字体大小。
为什么用 body 设置基础字号?
因为 rem 是相对于根元素(即 html)的字体大小,但实际开发中,我们常把基础字号设在 body 上,并同时设置 html { font-size: 16px; }(浏览器默认值),这样能保持一致性。更推荐直接在 html 上设置基础值,但若项目已约定用 body,也可通过继承机制让子元素默认沿用——不过要注意:body 本身不直接影响 rem 计算,真正决定 rem 基准的是 html 元素的 font-size。
正确做法:在 html 上设基准,body 可设默认字号
为避免混淆,建议按标准方式操作:
-
统一基准:在
html元素上设置基础字号,例如html { font-size: 16px; } -
全局继承:
body { font-size: 1rem; }(即继承 html 的 16px),确保段落、列表等默认文本有合理大小 -
响应式适配:可结合媒体查询或
clamp()动态调整 html 的 font-size,实现字号随屏幕变化 -
组件内使用 rem:标题、按钮、提示文字等全部用
rem,如h1 { font-size: 2.5rem; }(= 40px 当基准为 16px)
进阶技巧:用 CSS 自定义属性统一控制
如果希望更灵活地切换或调试字号体系,可以用 CSS 变量:
立即学习“前端免费学习笔记(深入)”;
- 在
:root中定义--base-font-size: 16px; html { font-size: var(--base-font-size); }- 后续修改只需改一个变量,所有 rem 值自动响应
- 支持 JS 动态修改,例如适配用户偏好或夜间模式
注意事项
别忽略这些细节:
- 不要只设
body { font-size: 18px; }就以为全站变大了——rem不会因此改变,除非你同步改了html的值 - 避免混用
px和rem造成维护困难,尤其在设计系统中应明确规范 - 移动端注意
viewport缩放可能影响实际渲染,必要时用text-size-adjust: none;(谨慎使用)










