移动端fixed和input获取焦点软键盘弹出影响定位的问题

在移动端使用fixed将按钮定位在底部时,当input获取焦点弹出软键盘时,在安卓系统会奖底部的按钮顶上去,有什么解决办法么,附上图一张图片描述

阅读 22.7k
7 个回答
    var h = document.body.scrollHeight;
    window.onresize = function(){
        if (document.body.scrollHeight < h) {
            document.getElementsByTagName("nav")[0].style.display = "none";
        }else{
            document.getElementsByTagName("nav")[0].style.display = "block";
        }
    };

$(document).ready(function(){

    var h=$(window).height();
    $(window).resize(function() {
        if($(window).height()<h){
            $('.footer').hide();
        }
        if($(window).height()>=h){
            $('.footer').show();
        }
    });

});

请问你用的什么用的布局方法 ?

目测你的按钮是fixed在底部的,在某些安卓机下,键盘弹起会引起窗口高度(html标签的高度)变小,而fixed定位是相对于html根元素的,所以会被顶上来了。所以你可以在页面加载完之后,用js获取窗口的高度赋值给html或者按钮的父元素,然后把按钮的定位改成absolute应该就可以了吧

提供个思路,你可以检测浏览器的resize事件,当高度过小时就可以判定为出现这种情况,这时把定位改成ab或者直接隐藏掉之类的。

可以试试flex布局,提交按钮和上面填写的内容分开

display: flex;
flex-direction: column;
justify-content: space-between;

给加了定位的元素fixed或absolute,加一个z-index:-1;就可以解决,不过元素就不会触发点击事件了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题