js禁止滚动条滚动

方法一:将body设置为fixed(滚动条会消失,页面会抖动,比较麻烦)

//弹层背景滑动问题
        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
            }
        }

// 关闭滑动
stopBodyScroll(true);
$('body').css({'position':'fixed',"width":"100%"});

// 开启滑动
stopBodyScroll(false);
$("body").css({"position":"initial"});

方法二:在body上添加overflow:hidden(滚动条会消失,页面会抖动,简单粗暴)

//禁用滚动条
function unScroll(){
	$('body').css("overflow-Y","hidden");
}

//停止禁用滚动条
function removeUnScroll() {
	$('body').css("overflow-Y","hidden");
}

方法三:禁用滚动条(滚动条不会消失,页面不会抖动,jquery提供的,但是有时候不生效)

//禁用滚动条
function unScroll() {
    var top = $(document).scrollTop();
    $(document).on('scroll.unable',function (e) {
        $(document).scrollTop(top);
    })
}
//停止禁用滚动条
function removeUnScroll() {
    $(document).unbind("scroll.unable");
}

方法四:结合方法二添加padding-right(滚动条的宽度,使页面不抖动)

function unScroll(){
	$('body').css("overflow-Y","hidden");
	
	//计算滚动条宽度 (滚动条的宽度不是都为17px的,算一下当前的比较精确)
	const outer = document.createElement('div');
	const inner = document.createElement('div');
	outer.style.overflow = 'scroll';
	document.body.appendChild(outer);
	outer.appendChild(inner);
	const scrollbarWidth = outer.offsetWidth - inner.offsetWidth;
	document.body.removeChild(outer);
	
	$(document.body).css( "padding-right",scrollbarWidth);
}

//停止禁用滚动条
function removeUnScroll() {
    $(document.body).css( "overflow-Y","auto");
    $(document.body).css( "padding-right","0px");
}
  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值