
Chrome 108+ 移动版为优化输入体验,默认改变了 viewport 缩放行为,导致 position: fixed 元素在软键盘弹出后滚动时异常隐藏;通过添加 interactive-widget=resizes-content 视口元标签即可恢复原有固定定位行为。
chrome 108+ 移动版为优化输入体验,默认改变了 viewport 缩放行为,导致 `position: fixed` 元素在软键盘弹出后滚动时异常隐藏;通过添加 `interactive-widget=resizes-content` 视口元标签即可恢复原有固定定位行为。
在 Chrome for Android(v108 及以上)中,浏览器对 和
根本解决方法:启用兼容性视口行为
Chrome 官方为此提供了标准化的回退机制——在
<meta name="viewport" content="width=device-width, initial-scale=1.0, interactive-widget=resizes-content">
✅ 此设置将强制 Chrome 恢复旧版行为:软键盘弹出时,visual viewport 不再压缩主视口尺寸,fixed 元素继续锚定在布局视口(layout viewport)边缘,滚动与定位完全稳定。
⚠️ 注意事项:
- 该属性仅在 Chrome 108+ Android 上生效,对 iOS Safari、Firefox Mobile 等无影响(它们本就保持传统行为);
- 不要与 viewport-fit=cover 混用,后者用于适配刘海屏,二者目标不同;
- 若页面已使用 height=device-height 等过时 viewport 值,需移除,避免冲突;
- 配合 scroll-behavior: smooth 或 @media (pointer: coarse) 可进一步提升移动端滚动体验。
验证建议
在真实 Android 设备上打开 DevTools → Network → Disable cache,修改 meta 标签后硬刷新,聚焦底部 textarea 并上下快速滚动,确认 #oben 与 #unten 始终可见且位置恒定。
总结:这不是 CSS 或 JavaScript 的 bug,而是浏览器主动演进带来的兼容性挑战。通过一行标准 meta 声明,即可零成本、无副作用地回归可靠 fixed 布局,是当前最推荐、最轻量的生产级修复方案。











