iOS 上输入框自带一圈内阴影和圆角,跟设计稿的直角边框对不上,聚焦时还会多一层高亮,安卓上却完全正常。乍看像缓存或者权限的锅,追下去往往不是。

input, textarea {
  -webkit-appearance: none;
  border-radius: 4px;
  box-shadow: none;
}

追下去是这么回事:Safari 给 input 和 textarea 留了默认 appearance 和内部阴影,只改 border 覆盖不掉,聚焦时还会再叠一层系统高亮。重置外观这一步不能省,不然后面调多少遍都对不上。

「iOS 输入框默认样式」这个问题文档写得含糊,实际行为以当前版本为准,别照旧版本的结论套。一次只改一处,改完立刻验证,几个改动叠在一起,出问题就说不清是谁导致的。

先做最小复现,能稳定跑出来的问题,排查成本会低一个数量级。

具体做法是,给输入框加 -webkit-appearance: none,先把原生外观清掉,这行是前提,少了它后面全白做;再用 box-shadow: none 去掉内部阴影,边框统一自己画,别让它跟着系统走;圆角统一写在 border-radius 里,不要依赖系统默认值,各机型默认值都不一样。

验收就看一点,iOS 和安卓上输入框边框圆角一致,聚焦时不再多出一圈阴影,看起来干净很多。

作者 9823189