Safari会放大字体是因为其仅依据最终计算出的font-size像素值是否≥16px来判断,而非CSS声明本身;需确保input、textarea等可聚焦元素在Computed中稳定≥16px,并配合-webkit-text-size-adjust: 100%同级声明。
因为 Safari 不看你写的 CSS 声明,只看最终计算出的 font-size 像素值是否 ≥16px。常见失效场景包括:
html 根元素设了 font-size: 14px,再用 input { font-size: 1.143rem } → 实际 ≈ 15.99px(浮点误差触发放大)font-size: 0.875em,子 input 未重置 → 继承后掉到 14px 以下clamp(14px, 4vw, 18px),在 320px 宽度下 4vw = 12.8px
font-size
真机调试时必须打开 Safari 开发者工具,选中输入框,直接看 Computed 面板里的 font-size 值——不是源码,是渲染结果。
iOS 会检查所有能唤起键盘的元素,漏掉任何一个都可能放大。比如富文本编辑器根节点、Vue 封装的 v-model 绑定的 div[contenteditable],都得覆盖。
:focus 伪类:某些框架在 focus 时动态加 class,导致字号回落input, textarea, select, [contenteditable] {font-size: 16px !important;
}
input:focus, textarea:focus, select:focus, [contenteditable]:focus {
font-size: 16px !important;
}
!important 撑着——它防不住 JS 动态插入的内联样式,得配合开发者工具验证最终值这个属性不是“禁用缩放”,而是阻止 Safari 对文本做二次重计算。它只在 font-size ≥ 16px 时才生效,且必须作用于具体元素上。
body 或 html 上 → 正文小字也变难读font-size 同级声明:input, textarea {font-size: 16px !important;
-webkit-text-size-adjust: 100%;
}
none:iOS 10+ 已废弃,部分版本反而失效;100% 是唯一稳妥值<meta name="viewport" content="... user-scalable=no"> 单独写无效,iOS 16+ 已部分忽略该行为,尤其在聚焦瞬间。
maximum-scale=1.0 才可能起效,但仍有竞态风险(JS 监听 focus 比 meta 修改慢几毫秒)font-size 稳定 ≥16px最容易被忽略的,是字号在继承链、rem/em 计算、甚至 transform 缩放后的实际像素值。不查 Computed,光改 CSS 就像蒙眼调参。
virtualbox下怎么实现ubuntu20.04开机自动挂载共享文件夹?
ubuntu20.04怎么开启护眼模式? ubuntu夜间模式的设置方法
如何在Ubuntu 20.04上安装Microsoft Edge浏览器
Ubuntu20.10优麒麟触摸手势有哪些? 优麒麟系统新增手势汇总
优麒麟20.04.1发布 更新内容汇总(附下载)
Mermaid Visual Editor 如何同步可视化操作与 Mermaid 源码?