同一个 input type=date,iOS 上高度只有 28px,安卓是 44px,日期文字贴着上边,placeholder 在 iOS 上完全不显示。第一次遇到会往复杂处想,其实漏掉的多是个小前提。
input[type='date'] {
-webkit-appearance: none; appearance: none;
height: 44px; line-height: 44px; box-sizing: border-box;
}
日期控件由系统渲染,两家内核默认样式不同,height 和 line-height 不生效。iOS 的空值不显示 placeholder,只显示占位横线。这一点先确认清楚,后面就不用反复试。
「日期控件样式」这类改动最怕改一半,回滚脚本先准备好,再动生产。临时改动用注释写上日期和原因,过两周自己都记不清为什么这么写。
动手前把原文件复制一份带时间戳,出问题立刻换回去,比现场分析快得多。一次只改一处,改完立刻验证,几个改动叠在一起,出问题就说不清是谁导致的。
先做最小复现,能稳定跑出来的问题,排查成本会低一个数量级。
具体做法是,统一设 height 和 padding 并加 box-sizing: border-box;用 -webkit-appearance 的 none 去掉原生外观;空值时用伪元素或覆盖层显示提示文字;iOS 和安卓各截一张图对比高度。
改完照着核一遍,两个平台上日期框高度都是 44px,未选择时能看到提示文字。
