为了账号安全,请及时绑定邮箱和手机立即绑定

iphone的safari在input框focus时, 下面会多出70px问题

iphone的safari在input框focus时, 下面会多出70px问题

慕妹3242003 2018-10-11 16:09:14
页面是这样的当我的键盘定位到输入框时, 加上scrollIntoView()之后, 就成这样了问题就是为什么safari下input和键盘中间多出来那一块, 这个怎么破, 注: 目测这一块是safari底栏的高度
查看完整描述

1 回答

?
白板的微信

TA贡献1883条经验 获得超3个赞

在ios里面,当一个文本框的样式为fixed时候,如果这个文本框获得焦点,它的位置就会乱掉,由于ios里面做了自适应居中,这个fixed的文本框会跑到页面中间。 这也是你说的 “ 多出70px ”的原因。

解决办法有两个:
可以在文本框获得焦点的时候将fixed改为absolute,失去焦点时在改回fixed,但是这样会让屏幕有上下滑动的体验不太好。

.fixfixed {   position:absolute;
}

$(document)
    .on('focus', 'input', function(e) {
        $this.addClass('fixfixed');
    })
    .on('blur', 'input', function(e) {
        $this.removeClass('fixfixed');
    });

还有一种就是用一个假的fixed的文本框放在页面顶部,一个absolute的文本框隐藏在页面顶部,当fixed的文本框获得焦点时候将其隐藏,然后显示absolute的文本框,当失去焦点时,在把absolute的文本框隐藏,fixed的文本框显示。

.fixfixed {
position:absolute;}$(document)
    .on('focus', 'input', function(e) {        $absolute..show();
        $this.hide();
    })
    .on('blur', 'input', function(e) {         $fixed..show();
        $this.hide();
    });

题主可以试一下。;)


查看完整回答
反对 回复 2018-11-15
  • 1 回答
  • 0 关注
  • 1266 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号