美文网首页前端之美-小程序
弹出层禁止页面滚动

弹出层禁止页面滚动

作者: 徐向博 | 来源:发表于2018-08-22 19:22 被阅读104次

    在做移动端遮罩层时,发现页面可以上下滚动,踩了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;
    body.style.cssText = 'width: 100%; height: 100%; position: fixed; top: -' + top + 'px; 
    left: 0; overflow: hidden;';
    

    关闭遮罩层时:

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

    2018.09.27更新

    document.body.scrollTop 存在兼容性问题,做个判断:

    if(document.documentElement.scrollTop){
        top = document.documentElement.scrollTop;
    }else if(document.body.scrollTop){
        top = document.body.scrollTop;
    }
    

    注意,关闭遮罩层时最好加上 document.documentElement.scrollTop


    原文地址:http://blog.xuxiangbo.com/im-40.html

    相关文章

      网友评论

      本文标题:弹出层禁止页面滚动

      本文链接:https://www.haomeiwen.com/subject/qxnyiftx.html