移动端文字动态缩放需结合vw与clamp(),设最小18px、最大32px;标题、正文、辅助文字应分层设置;旧浏览器用媒体查询降级;配合viewport声明、text-size-adjust和系统字体栈。
移动端文字过小,核心是让字体随屏幕宽度动态缩放,同时兼顾可读性与最小字号限制。单纯用 vw 容易在小屏上缩得太小(比如 iPhone SE 上 1vw ≈ 1.2px),导致文字难以识别;而只靠 media query 又不够平滑。两者结合才是实用解法。
vw 单位让字体随视口宽度线性变化,适合响应式排版。但必须设定上下限,避免极端情况:
16vw 会变成 51.2px,远超正常标题大小——需用 clamp() 或媒体查询兜底4vw 可能只有 16px,比默认正文还小——要设最小值推荐写法(CSS):
.title {
font-size: clamp(18px, 4.5vw, 32px);
}这表示:最小 18px、理想值按视口宽的 4.5% 计算、最大不超过 32px。现代浏览器支持良好,iOS Safari 13.4+ 已兼容。
标题、正文、按钮文字对可读性要求不同,应分别处理:
vw(如 clamp(24px, 6vw, 48px)),突出层级clamp(16px, 3.8vw, 20px)),保证小屏下不低于 16pxvw 微调,例如 font-size: max(14px, 3.2vw)

部分安卓 WebView 或老版本 iOS 不支持 clamp(),可用媒体查询降级:
p {
font-size: 16px; /* 默认兜底 */
}
@media screen and (min-width: 375px) {
p { font-size: 3.6vw; }
}
@media screen and (min-width: 768px) {
p { font-size: 18px; } / 平板设为固定值,避免过大 /
}
@media screen and (min-width: 1024px) {
p { font-size: 19px; } / 桌面端微增,提升阅读舒适度 /
}
注意:断点建议用设备常见宽度(375、414、768、1024),而非抽象“sm/md/lg”,更贴近真实用户场景。
光调 CSS 不够,还需检查 HTML 头部是否规范:
viewport 声明:
text-size-adjust: 100% 防止 iOS 自动放大,但若希望支持系统字号缩放,可改为 text-size-adjust: auto
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;,提升渲染一致性和清晰度不复杂但容易忽略。