禁止页面滚动的方法

平时做的大部分禁止页面滚动都是用preventDefault,附上代码

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

// 绑定事件document.addEventListener('touchmove', handler, false);// 解绑事件document.removeEventListener('touchmove', handler, false);复制代码

如上,addEventListener则添加禁止页面滚动事件;removeEventListener则恢复页面滚动。

但是有的时候,我们并不需要完全禁止全部页面,也会存在一种情况,那就是整体页面需要禁止滚动,但是弹窗内的内容仍需要滚动,此时,以上的方法就不适用了,给html加上overflow:hidden;height:100%;也是不适合的,因为这样页面会滚动到最顶部,那么此时就可以使用以下方法:

$("遮罩层出现按钮").click(function () {                            
    $("遮罩层").show();                            
    var scroll = $(window).scrollTop();                            
    $("html,body").css({                                
        "position":"fixed",                                
        "top":-scroll                            
    }); //相对于窗口定位弹窗,距离顶部的距离等于页面滚动的距离,这样就不会出现点击回到顶部的情况                           
    // 点击取消弹窗消失                            
    $("遮罩层消失按钮").click(function () {                                
        $("遮罩层").hide();                                
        $("html,body").css({                                    
            "position":"static",   //去除相对于窗口的定位                             
        });                                
        $(window).scrollTop(scroll);     //恢复浏览器原来的滚动距离                       
    })                        
})复制代码

具体的代码以及解释都在上面啦~


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值