webapp中绝对定位/固定定位与虚拟键盘冲突的问题

发布于 2022-08-29 17:28:26 字数 142 浏览 33 评论 0

webapp中最底下一般会有一些功能按钮,用absolute或者fixed固定在最底下,这个在pc端不会有什么问题,但是移动设备有时候会弹出虚拟键盘,导致布局有一定混乱,而且在闪现的时候容易引起误操作。

不知道大家有什么综合的解决方案去解决这个问题?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

别再吹冷风 2022-09-05 17:28:26

在移动平台上用 fixed 定位方式把内容定位到屏幕底部就是作死,不要这么设计,为 PC 和移动平台设计两套吧。

另外有个取巧的做法,在移动平台上可以监听窗口大小变化,然后可以在键盘弹出来的时候临时隐藏底部内容,优化体验。

谁许谁一生繁华 2022-09-05 17:28:26

用媒体查询:

@media (max-height: 400px) { 
  .footer {
    display: none;
  }
}
又爬满兰若 2022-09-05 17:28:26

刚刚也遇到了这个问题,参考此答案提了一个解决方案,还不错,分享一下:
虚拟键盘在点击input和textarea的时候会出现,所以点击input事件是虚拟键盘出现,input失去焦点是虚拟键盘隐藏。
所以当虚拟键盘出现时,将fixed定位转化为static,当虚拟键盘隐藏时,将static还原为fixed,就可以解决破坏布局的问题了。

$('input').on('click',function( ){
    $('#bottom').css({'position':'static'})
});
$('input').on('blur',function( ){
    $('#bottom').css({'position':'fixed'})
});
孤城病女 2022-09-05 17:28:26

input onfocus hide

卸妝后依然美 2022-09-05 17:28:26
$('body,html').height(document.body.clientHeight);

进入页面的时候就把高度固定住,这样虚拟键盘打开页面高度不会变化,你的布局也不会乱

篱下浅笙歌 2022-09-05 17:28:26

按照采纳的答案来搞就是:监听窗口大小变化 视窗高度 小于 页面高度时 清除定位
`
window.onresize = function(e){

if(e.target.outerHeight < $('body').height()){
    $('#bottom').css({'position':'static'});
}else{
    $('#bottom').css({'position':'fixed'});
}

}`

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文