原理:
打开遮罩的时候记录滑动距离 lockMaskScrollTop ,
同时设置 body 的 position: fixed; body.style.top= - lockMaskScrollTop;
关闭遮罩的时候 移除 body 的 position: fixed 即可。
代码如下:
css:
body.popup-open {
position: fixed;
}
js:
function closeBodyScroll() {
window.lockMaskScrollTop = document.scrollingElement.scrollTop || document.body.scrollTop;
document.body.classList.add('popup-open');
document.body.style.top = -window.lockMaskScrollTop + "px";
}
function openBodyScroll() {
if (document.body.classList.contains('popup-open')) {
document.body.classList.remove('popup-open');
document.scrollingElement.scrollTop = window.lockMaskScrollTop;
}
}
使用:
打开遮罩时禁止底层滑动: closeBodyScroll();
关闭遮罩时打开底层滑动: openBodyScroll();