前端知库

移动端虚拟键盘出现时怎样避免布局被遮挡?

理解 Visual Viewport、虚拟键盘和安全区域之间的关系,设计输入框、底部操作栏和滚动容器的适配。

参考答案

移动端布局视口和视觉视口可能不同。虚拟键盘弹出时,视觉可见区域缩小,但固定元素、滚动容器和 100vh 的表现会因浏览器而异。VisualViewport 可以观察可见区域变化,帮助把输入框和操作栏滚动到用户能看到的位置。

不要只监听 resize 就把页面整体高度改成一个固定值;这可能导致滚动跳动和双重滚动。应明确哪个容器负责滚动,配合动态视口单位、安全区域和焦点滚动策略,并处理键盘收起、旋转和输入法切换。

不同移动浏览器的键盘策略并不完全一致。关键表单要在真实设备测试,避免让底部提交按钮被键盘遮住,也不能为了避让键盘禁用用户正常滚动。