弹框后滚动穿透解决方法

794 阅读1分钟


移动端页面弹框后,弹框内容滑动滚动时,下层页面会跟着滚动。这个问题导致弹框内容滚动不灵,有时滑动时滚动的是下层页面。解决思路就是弹框时让下层页面不能滚动,可以设置下层页面position为fixed。

由于设置fixed后,下层页面会回到顶部,所以需要记下它的滚动高度并设置,具体工具方法如下:

  fixedBody() {
      var scrollTop =document.body.scrollTop || document.documentElement.scrollTop
      document.body.style.cssText += 'position:fixed;top:-' + scrollTop + 'px;'
    },
  looseBody() {
      var body = document.body
      body.style.position = ''
      var top = body.style.top
      document.body.scrollTop = document.documentElement.scrollTop = -parseInt(
        top
      )
      body.style.top = ''
    },

在弹框弹起时执行fixedBody方法,弹框收起时执行looseBody释放页面。