美文网首页
滚动穿透问题

滚动穿透问题

作者: 勤劳的小叶 | 来源:发表于2018-09-25 14:19 被阅读0次

    问题描述

    当浮层滚动触底时, 再次滑动浮层时, 浮层下面的页面会进行滚动, 即滚动穿透

    解决办法

    通过position: fixed将body固定在当前位置, 关闭浮层时, 再将清除该样式, 将页面滚动值设置为之前的值.

    代码

      function stopBodyScroll (isFixed) {
        var top;
        if (isFixed) {
          top = document.documentElement.scrollTop || document.body.scrollTop
          document.body.style.position = 'fixed'
          document.body.style.top = -top + 'px'
        } else {
          top = -parseInt(document.body.style.top)
          document.body.style.position = ''
          document.body.style.top = ''
    
        // 回到原先的top
        document.documentElement.scrollTop ?  document.documentElement.scrollTop = top : document.body.scrollTop = top
        }
      }
    

    注意

    1. 关闭浮层, 恢复滚动时, 不能不能使用document.documentElement.scrollTop的值, 由于设置了position, 其值为0, 因此需要通过top的值获取

    2. PC端可以直接通过设置body的overflow: hidden属性, 来固定底层页面, 但是该方法再移动端无效

    相关文章

      网友评论

          本文标题:滚动穿透问题

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