iOS Safari横屏时文字变大是因默认启用-webkit-text-size-adjust:auto,需在html上设text-size-adjust:100%;Android微信X5内核不支持该属性,须用JS桥接处理。

为什么横屏时文字会突然变大
iOS Safari 默认对横屏启用 -webkit-text-size-adjust: auto,它不是改 font-size 值,而是在渲染层强行放大文本块——导致 line-height 失准、Flex 项换行、按钮高度突变、甚至文字发虚。这个行为在 iPhone 全系默认开启,iPad 则默认禁用,所以问题基本只出现在 iPhone 横屏场景。
必须写在 html 或 body 上才生效
只给某个 你在 Android 微信里加 虽然 横屏错乱最顽固的地方不在 CSS 写法,而在于「谁先渲染、谁后接管」:iOS Safari 在 CSS 解析前就做了渲染层干预,X5 内核则在 JS 执行后才覆盖字体基准。这两套机制互不兼容,必须分层应对,漏掉任一环都会看到闪动或错位。 加 text-size-adjust: 100% 完全无效。浏览器只检查文本的**最近祖先容器**是否设置了该属性,且必须是能影响整个页面文本流的根级元素:
html { text-size-adjust: 100%; -webkit-text-size-adjust: 100% !important; } 是最稳妥写法-moz-text-size-adjust 和 -ms-text-size-adjust 没坏处,但实际只在极老 Android 浏览器里起作用* { text-size-adjust: 100% } —— 性能差,且部分旧版 Safari 会忽略通配符规则Android 微信 X5 内核根本不认
-webkit-text-size-adjust
body { -webkit-text-size-adjust: 100% !important; },查 getComputedStyle(document.body).webkitTextSizeAdjust 会返回空字符串,说明内核压根不解析这个属性。这不是写法问题,是 X5 不支持。此时必须靠 JS 桥接:
里就放初始化代码,不能等 DOMContentLoaded
WeixinJSBridge.invoke('setFontSizeCallback', {fontSize: 0}),其中 0 表示“恢复系统默认字号”,不是“最小字号”menu:setfont 事件,防止用户手动点微信菜单再次触发放大window.matchMedia('(min-resolution: 2dppx)') + 动态重设 font-size
text-size-adjust: none 的真实代价none 能彻底禁用自动缩放,但它也会让低视力用户无法使用系统级“增大文字”设置,可访问性直接归零。MDN 明确标注该值在生产环境应避免。更现实的做法是:
text-size-adjust: 100%:允许用户缩放,但禁止浏览器擅自干预line-height(如 line-height: 1.4)和合理 font-size(避免 )
html { text-size-adjust: 100% } 必须存在,不能只靠 -webkit- 版本
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











