核心是让html的font-size随屏幕宽度等比变化,flexible.js将document.documentelement.clientwidth除以10设为font-size,如320px屏宽对应32px,实现rem等比缩放;需设置viewport、引入flexible.js、按设计稿基准换算rem,并注意最小font-size限制与大屏媒体查询。

核心是让 html 的 font-size 随屏幕宽度等比变化,而不是单纯用 rem 单位。flexible.js 的作用就是自动完成这个计算和设置过程。
原理:把屏幕宽度划分为 10 等份
flexible.js 默认将当前设备的 document.documentElement.clientWidth(可视区域真实宽度)除以 10,结果直接设为 html 的 font-size 值。
例如:
- iPhone SE(320px 屏宽)→
html{font-size:32px}→ 1rem = 32px - iPhone 12 Pro Max(428px 屏宽)→
html{font-size:42.8px}→ 1rem = 42.8px
这样,所有用 rem 写的尺寸就自然按比例缩放,UI 看起来始终和设计稿一致。
使用步骤:三步到位
① 设置 viewport(必须)
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
将调研报告、方案对比、数据分析、需求梳理、会议纪要、设计说明、代码评审、学习笔记等任务产物输出为可在浏览器直接打开的单文件 HTML,替代 Markdown 作为最终交付物。Markdown 在信息密度、视觉清晰度和可分享性上已跟不上 AI 产物的丰富度,HTML 能同时承载排版、表格、SVG 等。
② 引入 flexible.js(推荐 CDN 或本地引入)
<script src="https://cdn.jsdelivr.net/npm/amfe-flexible@2.2.4/index.js"></script>
③ CSS 中按设计稿基准换算 rem
若设计稿是 750px 宽,约定“10 份 = 750px”,则 1 份 = 75px → 即 1rem = 75px(此时 html font-size 应为 75px)
那么一个 150px 宽的按钮,就写成 width: 2rem(150 ÷ 75 = 2)。
注意边界与兼容细节
flexible.js 会自动处理以下情况:
- 小屏下 font-size 不会低于 12px(防过小导致文字/元素异常)
- 大屏超过 750px 时,通常加媒体查询锁定最大 font-size,避免拉伸失真:
@media screen and (min-width: 750px) { html { font-size: 75px !important; } } - 不依赖 window.innerWidth,而是用 clientWidth,排除滚动条干扰,更准确
辅助开发建议
开发时可配合工具提升效率:
- VS Code 插件 cssrem:自动把写死的 px 转成对应 rem 值
- 构建阶段用 postcss-pxtorem:在打包时批量转换,减少手动计算
- 设计稿标注尽量统一单位(推荐以 750px 或 375px 为基准),方便换算
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










