viewport meta 标签必须同时包含 width=device-width 和 initial-scale=1.0,否则 ios safari 回退至 980px 视口导致缩放失真、文字模糊、touch 坐标错乱;rem 应在 head 内联 style 中用 calc(100vw / 375 * 16px) 静态设置,避免 js 动态修改引发闪屏;老 ios flex 对 min-width 不兼容,需加 flex-shrink: 0 或使用 width: max-content。

viewport meta 标签写错,页面在手机上就永远缩成一团、文字发虚、点击区域偏移——这不是样式问题,是浏览器根本没按你预期的尺寸渲染。
viewport content 必须包含 width=device-width 和 initial-scale=1.0
漏掉其中任意一个,iOS Safari 就会回退到默认的 980px 布局视口,再强行缩小显示,导致字体模糊、touch 事件坐标错乱、1rem 计算失准。
-
width=device-width不是像素值,而是告诉浏览器:把 CSS 像素宽度设为设备逻辑宽度(比如 iPhone 14 是 390px),不是物理像素,也不是固定 375 -
initial-scale=1.0防止 Safari 在双击标题或输入框聚焦时自动缩放,这是 iOS 特有行为,不加它,font-size: 16px可能瞬间变小 - 别写
width=375或width=320——横屏时直接溢出,且不同设备的“375”逻辑含义不同(dpr、系统缩放都会影响)
maximum-scale=1.0 和 user-scalable=no 要按场景谨慎启用
它们在部分安卓 WebView 和旧版 Chrome 中会破坏 pinch-zoom 行为,WCAG 也不推荐无条件禁用缩放。
如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Android友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Android应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更
-
user-scalable=no确实能避免表单弹出键盘后页面被顶起、布局错位,但会损害可访问性;仅 Web App 场景或强控 UI 时考虑启用 -
maximum-scale=1.0单独使用无效,必须和initial-scale=1.0同时存在,否则某些安卓浏览器直接忽略 - 如果项目需支持无障碍,建议去掉这两项,改用
text-size-adjust: 100%抑制系统字体缩放叠加影响
rem 基准不能靠 JS 动态设置,得前置到 HTML 解析阶段
用 document.documentElement.style.fontSize 在 DOMContentLoaded 里改,用户会看到文字先按默认 16px 渲染,再突然放大——这就是闪屏。
- 正确做法是在
最顶部加内联<style></style>,用calc()直接计算:html { font-size: calc(100vw / 375 * 16px); }(以 375px 设计稿为基准) - Safari 旧版本不支持
calc(100vw / 375 * 1rem)这种混用单位写法,必须统一为px - iOS 键盘弹出时
window.innerWidth不变,但视觉视口被压缩,JS 方案此时算出的 rem 基准会“虚高”,输入框可能被顶出可视区
flex 布局在老 iOS 上对 min-width 和 flex-basis 的兼容性极差
iOS 12 及更早系统中,flex: 1 容器里的子元素设了 min-width: 200px,实际会被压缩到 0 —— 这不是 bug,是老 flex 算法根本不识别 min-width。
- 绕过方式:给该子元素加
flex-shrink: 0,强制不收缩;或者用width: max-content; flex: 0 0 auto - 别依赖
flex-basis控制关键尺寸,Android Chrome 80 之前也有类似不一致表现 - 老 iOS WebKit 需要前缀:
display: -webkit-flex和-webkit-flex: 1必须显式写出,否则flex: 1直接失效
viewport 不是“加个标签就完事”的开关,它是整个移动端渲染链路的起点。一旦设错,后续所有 rem、flex、媒体查询都在错误的坐标系里运行——问题越往后堆叠,越难定位。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










