ios光标错位问题

方法1. 给 body设置fiexd(此方法会导致第一次点击Input没有光标)

  • 尝试了给别的元素点击或再次获取当前Input焦点, 都没效果(没有解决导致第一次点击Input没有光标的问题);

···

    /*弹窗关闭*/
    $('.closePop').on('click', function(){
        $('.flexBg, .appPop').hide();
        hidePop();
    });
    // 点击展开弹窗
    $('p').click(function () {
        $('.flexBg, .popLogin').show();
        showPop();
    })

    // 关闭弹出的时候, 调用这个代码;
    function hidePop() {
        var u = navigator.userAgent;
        var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
        if(isiOS) {
            $("body").css({
                position: "relative"
            })
        }
    }
    // 展开弹框的,  调用这个方法;
    function showPop(){
        var u = navigator.userAgent;
        var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
        if(isiOS) {
            $("body").css({
                position: "fixed"
            })
        }
    }
    /*弹窗关闭 end*/

···
这里的解决方法: 主要是如下步骤

  • 判断是否是Ios, 如果是, 则当获取焦点的时候, 修改定位方式
 if(isiOS) {
                $("body").css({
                    position: "fixed"
                })
            }
  • 当失去焦点的时候,
        $("body").css({
                    position: "relative"
                })

方法2. 改用上下定位+(中间全局+滚动条)。

···

html, body{
height: 100%;
width: 100%;
display: block;
}

.header{
width: 100%;
height: 100px;
position: absolute;
left: 0;
top: 0;
}

.footer{
width: 100%;
height: 100px;
position: absolute;
left: 0 ;
top: 0;
}

.main{
width: 100%;
height: 100%;
overflow: auto;
}

···

你可能感兴趣的:(ios光标错位问题)