移动端 viewport 设置后页面还是缩放异常怎么办?
我在 React 项目里加了 viewport meta 标签,但 iOS 上页面还是会自动缩放,字体忽大忽小,特别在横屏时更明显。试过 width=device-width 和 initial-scale=1,但没用。
这是我在 public/index.html 里加的配置:
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
但实际效果还是不对,是不是 React 里还要额外处理?或者这个写法有问题?
先检查 CSS 加这两行:
iOS 在横屏时会自动调整字体大小来"优化阅读",
-webkit-text-size-align: 100%就是告诉它别瞎搞。如果还不行,试试这个 viewport 写法:
viewport-fit=cover是给 iPhone X 以后的刘海屏用的,加上有时候能解决一些奇怪的缩放问题。还有一个常见的坑: 检查你的 React 组件里有没有动态修改 viewport 或者 body 的 zoom 样式,有些第三方库(比如一些图表组件)会偷偷改缩放。
最后提醒一下: iOS 13+ 的 Safari 即使你设置了 user-scalable=no,用户依然可以用双指捏合缩放,这是系统限制。如果非要禁止,可以在 JS 里监听 touch 事件阻止默认行为,不过这不是什么好做法,容易影响可访问性。
你先试试前面两个方案,大部分情况下能解决。