在微信浏览器中,未做处理时,滚动到顶部,依然能滚动一段距离。通过下面一些方式,来阻止背景的滚动。
阻止页面滚动的默认事件
document.addEventListener('touchmove', function(e) {
e.preventDefault()
}, { passive: false })
页面超出或者含有overflow-y:scroll;
的元素时,无法滚动,例如:
<div class="scroll-y">
<ul>
<li>456</li>
<li>456</li>
<li>456</li>
<li>456</li>
<li>456</li>
</ul>
</div>
.scroll-y {
width: 100vw;
height: 200px;
overflow-x: hidden;
overflow-y: scroll;
}
ul li {
margin-bottom: 40px;
}
这时需要捕获滚动事件:
const dom = document.querySelector('.scroll-y')
dom.addEventListener('touchmove', e => {
e.stopPropagation()
})
页面未设置position
时,在IOS端,背景依然是可以滚动的,此时使用position:fixed;
使页面固定,可以彻底解决安卓和IOS背景滚动的问题。