打开弹蒙层禁止下方页面滚动


 

弹窗是一种常见的交互方式,而蒙层是弹窗必不可少的元素,用于隔断页面与弹窗区块,暂时阻断页面的交互。但是在蒙层出现的时候滚动页面,如果不加处理,蒙层底部的页面会开始滚动,实际上我们是不希望他进行滚动的,因此需要阻止这种行为。当弹出蒙层时禁止蒙层下的页面滚动,也可以称为滚动穿透的问题。

 

以下是JQ的解决方案:

 

 1 let pageScrollTop
 2 
 3 // 当打开蒙层时
 4 function openMask  () {
 5   // 你的执行代码
 6   ...
 7 
 8   pageScrollTop = document.documentElement.scrollTop
 9   $('body').css({
10     'width': '100%',
11     'position': 'fixed',
12     'top': -pageScrollTop,
13     'overflow-y': 'scroll'
14   })
15   $('html').css({
16     'scroll-behavior': 'auto'
17   })
18 }
19 
20 // 当关闭蒙层时
21 function closeMask () {
22   // 你的执行代码
23   ...
24 
25   $('body').css({
26     'top': '',
27     'position': '',
28     'width': '',
29     'overflow': ''
30   })
31   window.scrollTo({
32     top: pageScrollTop,
33   })
34   $('html').css({
35     'scroll-behavior': '',
36   })
37 }

 

 
posted @ 2025-03-27 10:02  地yu荒冢  阅读(92)  评论(0)    收藏  举报