解決遮罩層上方元素可以滾動禁止遮罩層下方滾動問題


1. 通過js控制

  方法一:----有兼容性問題,蘋果和安卓低版本滑動時屏幕上下部分會閃動

打開遮罩層時:

document.documentElement.style.overflowY = 'hidden'; //禁止底層div滾動

關閉遮罩層時:

document.documentElement.style.overflowY = 'auto'; //取消禁止屏幕滾動

方法二:----有兼容性問題,蘋果和安卓低版本滑動時屏幕上下部分會閃動

 

       在打開遮罩層時:

 

       document.body.style.overflow = 'hidden'

 

       在關閉遮罩層時:

 

       document.body.style.overflow = 'scroll'

 

 

2. vue

如果不要求遮罩層滾動,那么就直接給遮罩層最外層元素添加:

@touchmove.prevent

 

3. 通過css控制

存在問題:當打開遮罩層時頁面會回滾到最頂部

在打開遮罩層時:

document.body.style.overflow = 'hidden'

document.body.style.width = '100%'

document.body.style.height = '100%'

document.body.style.position = 'fixed'

在關閉遮罩層時:

document.body.style.overflow = 'scroll'

document.body.style.width = '100%'

document.body.style.height = '100%'

document.body.style.position = 'relative'

4. 最佳解決方式

  在打開遮罩層時:
  document.body.style.position = 'fixed'
  document.body.style.overflow = 'hidden'
  注意:當打開遮罩層時,底部的頁面會返回最頂部
  在關閉遮罩層時:
  document.body.style.overflow = 'scroll'
  document.body.style.position = 'relative'
  window.scrollTo({ top : 10000})     //我這邊默認將頁面滾動到最底部
  當關閉遮罩層時將頁面滾動到底部,如果有要求頁面停到某個位置的,就需要在打開遮罩層定位之前就將主頁面當前位置向上滾動的距離保存到變量scrollTop中,在關閉遮罩層后將當前頁面的window.scrollTo({ top : scrollTop})

解決遮罩層上方元素可以滾動禁止遮罩層下方滾動問題


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM