font-size用vw会线性失控,clamp()需统一单位基准,横竖屏切换时vw不刷新需媒体查询兜底,真机字体不准需设置text-size-adjust为100%。

直接用font-size: Xvw会线性失控
vw是视口宽度的1%,数值固定、缩放无脑——font-size: 4vw在iPhone SE(375px)上≈15px,勉强可读;但在4K屏(3840px)上直接飙到153.6px,标题顶穿导航栏。这不是“响应”,是“裸奔式缩放”。它不关心阅读舒适区,只忠实地执行数学计算。
clamp()三个参数单位必须兼容
常见错误是混用单位:clamp(1rem, 2em, 2.5rem)看似合理,但em依赖父级font-size,而父级可能已被其他规则覆盖或重设,导致中间值跳变、不可预测。安全写法必须统一基准:
- min用
14px或1rem(固定保底) - preferred用
2.8vw或calc(1rem + 0.3vw)(不依赖父级) - max用
2.2rem(避免高分屏溢出)
移动端横竖屏切换时vw不刷新
iOS Safari和部分安卓WebView在旋转瞬间不会重算vw值,字体卡在旧尺寸。这不是bug,是渲染管线限制。临时修复可用JS触发重排:document.body.style.transform = 'scale(1)';更可靠的是加媒体查询兜底:@media (orientation: landscape) { html { font-size: calc(100vw / 375 * 16); } }。
真机上字号不准?先查text-size-adjust
DevTools里看着正常,一上真机(尤其Android Chrome、Samsung Internet)字体突然变小——大概率是浏览器启用了Font Boosting。CSS单位再准也没用,必须显式锁定:html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }。别用none,它会破坏视障用户系统字号设置。
立即学习“前端免费学习笔记(深入)”;
真正麻烦的不是clamp()怎么写,而是设计稿没给横屏字体规范,开发只能硬套竖屏逻辑,结果横屏标题挤成一行——这时候再补CSS就晚了。


















