前端--弹出框弹出后禁用背后的滚动

4 篇文章 0 订阅

 

弹出框显示后背后仍然可以滚动的问题可以这样解决,第一种设置body,但是不兼容ios,第二种禁用touch事件,但是pc端无效,于是把两种结合就能兼容ios和其他手机端和pc端。

//弹出框后禁止滑动  
//先设置body,iOS无效
$("body").css({"height":"100%","overflow":"hidden"})

//恢复
$("body").css({"height":"auto","overflow":"auto"})

 

//兼容ios方法1
//设置遮罩层后无法滑动和触摸  pc无效
var shield=document.getElementById("#grayback");//这里写遮罩层的名字
        shield.addEventListener("touchstart",function(e){
                    e.stopPropagation();
                    e.preventDefault();
                },false);
//兼容ios方法2
//这是自己综合写的方法,兼容所有浏览器和手机,ios和安卓
export const touchMixins = {
    bodyScroll: (event) => {
        event.preventDefault();
    },
    //禁用touchmove
    noTouch: () => {
        console.log(touchMixins)
        document.body.addEventListener(
            "touchmove",
            touchMixins.bodyScroll, { passive: false },
            false
        );
        document.body.style.overflow = "hidden";
        document.body.style.height = "100%";
    },

    //恢复touchmove
    haveTouch: () => {
        document.body.removeEventListener(
            "touchmove",
            touchMixins.bodyScroll, { passive: false },
            false
        );
        document.body.style.overflow = "auto";
        document.body.style.height = "auto";
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值