Android上input输入框聚焦后页面布局错乱怎么办?
我在做一个移动端表单页面,iOS 上一切正常,但在 Android 手机(比如三星、小米)上点击 input 输入框时,页面会突然往上顶,底部导航栏被顶出视野,甚至有些元素错位。试过加 viewport meta 和禁止缩放,但问题还在。
这是我的输入框结构:
<div class="form-container">
<input type="text" placeholder="请输入姓名" />
<button>提交</button>
</div>
有没有人遇到过类似情况?是不是 Android 软键盘弹出时 viewport 高度计算的问题?该怎么修复?
如果你页面里用了
position: fixed或者是靠100vh撑开的高度,键盘一弹,这些固定定位的元素就会跟着视口底部往上跑,导致布局乱飞。解决方案其实很简单,别用 fixed 定位做底部导航,改用 Flex 布局把页面撑开。核心思路是让内容区域自适应滚动,而不是把整个页面顶上去。
给你写个能用的结构,你照着改改 CSS:
HTML 结构也得调整一下,把输入框和底部按钮包在 flex 容器里:
当初我也是试了一堆 meta 标签都没用,最后换成这种 Flex 纵向布局才搞定。这样键盘弹出来的时候,只会挤压中间的
main-content区域,底部的按钮会被顶上去显示在键盘上方,不会飞出视野,也不会错位。你可以试试这个方案,基本能兼容 99% 的安卓机。