移动端页面中如何处理虚拟键盘弹出导致的页面变形的问题?

321 天前
 lee88688

最近在写移动端的页面时发现如果虚拟键盘弹出后会导致页面变形,整个页面不太可用。页面的输入框是使用绝对定位,键盘弹出之后输入框也看不见了😂。

不知道现在有没有关于虚拟键盘检测或者阻止页面因为虚拟键盘弹出变形的 api (我搜索之后好像是没有),目前只能通过 resize 事件检测,然后把输入框移动到顶端避免被遮挡。

822 次点击
所在节点    前端开发
9 条回复
Track13
321 天前
有,但是因为兼容性等于没有。
https://juejin.cn/post/7261985825089929276
murmur
321 天前
学淘宝这种,如果文本框在底下,点了之后不要出现文本框,而是跳到一个新页面,这个新页面文本框在最上面

设计的时候就避免把文本框放地下

当然如果是表单这种流式页面就不管他了
DOLLOR
321 天前
输入框应该尽量避免用绝对定位吧,尤其是移动端的小屏幕,绝对定位能造成很多交互的问题。
lee88688
321 天前
@murmur
@DOLLOR
这输入框使用绝对定位是业务场景限制的没办法,就是看看有没有其他方法可以打个补丁。
rabbbit
321 天前
1 改设计,点击输入框跳转到新页面或弹出弹窗,将输入框放在新页面、弹窗顶部
2 输入框下面放一个占位的 div ,点击输入框时显示 div 把输入框顶上去
rabbbit
321 天前
3 不考虑兼容性就 virtualKeyboard
lee88688
320 天前
@rabbbit 我测试了一下当虚拟键盘弹出来的时候整个页面发生比较大的变化,整个布局都乱套了。有没有相关的文章介绍这个的呢?
euronx
263 天前
给 input 框添加 onfocus 事件,把 body 的 style.height 设置为 window.innerHeight 且 overflow: 'hidden'
euronx
263 天前
开发了好几年移动端页面,一直都用的这个方法,一直都没啥问题

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1006820

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX