JS禁止滚动条滚动

 

我们在写项目时候可能会遇到这样一种效果:
点击按钮,弹出一个对话框,此时只能在框内操作,此时滚动条消失并禁止滚动

或是这样的

 

 1、overflow:hidden

设置body的overflow属性值为hidden

禁用滚动条:

document.body.style.overflow = 'hidden';
document.body.style.width = 'calc(100% - 17px)'; // 避免因为消失滚动条造成页面抖动

停止禁用滚动条:

document.body.style.overflow = 'auto';
document.body.style.width = '100%'; // 避免因为消失滚动条造成页面抖动

原理:平时body的overflow属性默认值就是auto,如果把该属性设置为hidden,则body的溢出部分显示隐藏,而不会显示滚动条,如果属性值auto则是溢出部分自动显示滚动条。

如果之前就显示滚动条那么点击后滚动条消失,就是会消失这页面宽度的17像素,从而导致页面抖动,这时候我们可以用calc计算函数将这17像素减去

2、position:fixed

将body设置为固定定位,将body元素的定位属性设置为fixed,可以使元素固定在屏幕上,从而禁止滚动,例如:

禁用滚动条:

document.body.style.position = 'fixed';
document.body.style.left = '0';
document.body.style.top = '0';
document.body.style.width = 'calc(100% - 17px)';

停止禁用滚动条:

document.body.style.position = 'static';
document.body.style.width = '100%';

同第一种方法一样,会造成页面抖动,同样可以用calc计算函数减去滚动条的17像素,从而解决抖动问题

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

中二病也要写前端

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值