徐向博 / Imin.

弹出层禁止页面滚动
作者:Imin 时间:2018-08-22 分类: 前端
在做移动端遮罩层时,发现页面可以上下滚动,踩了N个坑之后,总算是解决了这个问题。
禁止滚动
给body设置宽高都是100%,固定在左上角,溢出隐藏的样式。
var body = document.body;
body.style.cssText = 'width: 100%; height: 100%; position: fixed; top: 0; left: 0; overflow: hidden;';

但是,这样会有BUG:每次执行这个,都会把页面拉到最顶部,很明显这样是不行的。解决方案如下:

var body = document.body; 
var top = body.scrollTop;
// 我这里为了不换行,中转了一下,项目中可省去这一步
var a = 'width: 100%; height: 100%; position: fixed; top: -' + top + 'px; left: 0; overflow: hidden;';
body.style.cssText = a

关闭遮罩层时:

body.removeAttribute('style');
body.scrollTop = top;

实际使用中发现,scrolltop的获取存在浏览器兼容问题,上面的top = body.scrollTop修改为下面这行即可:

var top = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop


中外看点网谢谢站长的福利 2018-10-14 01:39
广安网站建设谢谢博主分享 2018-10-11 09:16
Imin@天津网站建设 感谢来访 2018-09-29 18:11
天津网站建设感谢博主分享,我又来咯 2018-09-19 18:06