开发公众号的时候,遇到ios下键盘收起,页面显示空白,底下的元素被遮挡。
效果如图:
问题图片.png
发现问题:
键盘收起的时候,内容没有回弹,并且有一块空白遮挡了一部分元素
发现原因:
form元素都采用了fixed定位,底下还有提交按钮同样使用了fixed定位
解决问题:
将fixed定位改换成absolute定位,解决了元素被遮挡的问题,
新的问题产生,内容不会回弹,需要手动拉动一下给body添加监听事件,当检测到键盘收起的时候,设置top值,具体可参考下面代码:
//这里监听键盘收起,然后滚动顶部
document.body.addEventListener('focusout', () => {
//软键盘收起的事件处理
let ua = navigator.userAgent.toLowerCase();
if (ua.indexOf('iphone') > 0 || ua.indexOf('ipad') > 0) {
//键盘收齐页面空白问题
document.body.scrollTop = document.body.scrollHeight;
}
})
结果:
将这段代码加到vue的mounted中,亲测有效。
最终效果图:
最终效果图.png