完美解决弹出页面弹出层时背景可滚动问题

1.公共函数代码

function bodyScroll(event){  
    event.preventDefault();  
}

var top1 = 0
function stopBodyScroll(isFixed) {
	var bodyEl = document.body
	if (isFixed) {
		top1 = window.scrollY
		bodyEl.style.position = 'fixed'
		bodyEl.style.top = -top1 + 'px'
	}else{
		bodyEl.style.position = ''
		bodyEl.style.top = ''
		window.scrollTo(0, top1) // 回到原先的top
	}
}

2.弹出时候加入代码

stopBodyScroll(true);
document.body.addEventListener('touchmove',bodyScroll,{ passive: false });  
$('body').css({'position':'fixed',"width":"100%"});

3.关闭弹出时候加入代码

stopBodyScroll(false);
document.body.removeEventListener('touchmove',bodyScroll,{ passive: false });   
$("body").css({"position":"initial","height":"auto"});

实现逻辑:

首先需要获取到你弹出层点击事件的时候,你当前页面的位置,即你页面沿x轴滚动距离顶部的高度。然后绝对定位到当前高度,这样就可以保持底层页面不会动,然后添加touchmove的监听事件。禁止滑动。

关闭的时候,页面回到原来的定位位置,去掉touchmove监听事件。

注意:代码顺序

本人的一些解决办法,希望相互学习。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值