最可靠写法是 html { text-size-adjust: 100%; };它阻止浏览器自动放大文本导致布局抖动,同时保留用户缩放能力,必须声明在 html 元素且 inline 到 head 顶部。

直接结论:用 html { text-size-adjust: 100%; } 是当前最可靠、兼顾可访问性的写法;单独设 -webkit-text-size-adjust 或只作用于 body / div 容易失效。
为什么 text-size-adjust: 100% 能起效,而 none 不推荐
浏览器(尤其是 iOS Safari)在横竖屏切换、双击缩放、系统字体变更时,会偷偷对文本容器做“启发式放大”,导致父容器高度突变、Flex 换行错位、line-height 失准。 text-size-adjust: 100% 的作用不是禁用用户缩放,而是阻止浏览器自动干预——它允许用户通过系统设置或双指缩放调整字号,但不触发渲染抖动。
text-size-adjust: none 会彻底绕过系统级字体调节链路,低视力用户可能无法阅读;iOS 13–14.2 中还曾导致 input 双击失焦,已不建议生产环境使用。
如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Android友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Android应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更
- 必须声明在
html元素上:子元素或局部容器(如#footer)设了也无效 - 不能写在
@media查询里:它需作为最外层 CSS 规则提前生效 - 第三方 SDK 动态插入的
<style></style>可能覆盖它,建议 inline 到最顶部
移动端 input 字体被强制放大怎么破
iOS Safari 对 font-size 的表单控件会强制放大,仅加 <code>-webkit-text-size-adjust: 100% 不够——它只是“防守补丁”,真正起效的前提是计算后字号 ≥ 16px。
- 必须用绝对单位:
input { font-size: 16px; -webkit-text-size-adjust: 100%; } - 避免
rem/em间接压缩:根元素font-size若为12px,1.333rem算出来虽接近 16px,但精度误差或缩放抖动可能跌破临界值 - 配合完整
viewport:<meta name="viewport" content="width=device-width, initial-scale=1">,否则缩放逻辑混乱
Android 微信(X5 内核)为啥不认 text-size-adjust
X5 内核压根不解析 text-size-adjust 或 -webkit-text-size-adjust,你在控制台查 getComputedStyle(document.body).webkitTextSizeAdjust 会返回空字符串,这不是写法问题,是内核不支持。
- 必须 JS 桥接:
WeixinJSBridge?.invoke('setFontSizeCallback', { fontSize: 0 }),其中0表示“恢复系统默认字号” - JS 必须尽早执行:放在
里,不能等DOMContentLoaded,否则页面已错乱再修正会有闪动 - 监听
menu:setfont事件:防止用户手动点微信菜单里的“调整字体”再次触发放大 - 华为 EMUI 等定制 ROM 可能绕过桥接,需 fallback 到
window.matchMedia('(min-resolution: 2dppx)')+ 动态重设font-size
真正容易被忽略的点是:这个属性必须在任何字体样式应用前就生效,且要防住动态插入节点和第三方样式覆盖。光写一行 CSS 不等于解决问题,得把它当成渲染链路上的一个关键守门员来部署。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










