在做H5页面,发现在ios下,存在以下的现象:
- A,B两个兄弟元素,A覆盖在B上面。在A上面滑动手指,会引起B元素内部滚动。
- body元素和内部元素。内部元素A绝对定位在上面。在A上面滑动手指,body会滚动。
针对 1 情况,目前没想到解决方法。
针对 2 情况, 解决方法如下:
简单处理 overflow
方案
export const bodyScroll={
stop(){
document.body.style.overflow=''
},
restore(){
document.body.style.overflow=''
}
}
这个简单方案,在一些ios系统下,是不起作用的。
复杂处理方案 fixed
方案
export const bodyScroll={
scrollTop:0,
stop(){
this.scrollTop=document.body.scrollTop|| document.documentElement.scrollTop
document.body.style.position='fixed'
document.body.style.top=`-${this.scrollTop}px`
document.body.style.width=`100%`
},
restore(){
document.body.style.position='relative'
document.body.style.top=`0px`
document.body.style.width=`auto`
document.body.scrollTop=document.documentElement.scrollTop=this.scrollTop
}
}