把整屏高度从 100vh 换成 100dvh,新机型上正常,旧安卓打开只剩半屏,下面内容全被裁掉,回退都来不及,两端表现差得离谱。日志里能对上时间点,这种反而好排。

dvh 是较新的单位,旧版安卓 WebView 和部分国产浏览器不认识,整条声明被丢弃,高度退回 auto 就撑不起来。写之前先看目标机型的占比,回退方案要先想好。这一点先确认清楚,后面就不用反复试。

.screen { height: 100vh; height: 100dvh; }
/* 旧内核吃 vh 新内核用 dvh 覆盖 */

这次卡住的地方就在「dvh 兼容」这一环,单独把它拎出来验证,别和其他改动混在同一次发布里。线上出问题先对时间点,跟发布、备份、任务执行的时刻排一排,能省掉一半功夫。

处理上按这个顺序:先写 100vh 兜底,再写一行 100dvh,让新浏览器自己覆盖,顺序反了旧机就拿到空值;需要精确高度时,用脚本读 innerHeight 写进 CSS 变量,变量再喂给样式表;降级别用 100%,父级没定高度时它一样失效,反而更难查,不如保留 vh。

结果对不对很好判断,旧安卓上整屏高度正常,新机型地址栏收起后也不留白,这两端都要测。

作者 9823189