您现在的位置是:网站首页> 编程资料编程资料
前端页面弹框遮罩禁止页面滚动CSS设计之页面滚动条出现时防止页面跳动的方法使用overflow: hidden来禁用页面滚动条纯css 实现footer 一直在页面底部,不随页面滚动HTML页面滚动时部分内容位置固定不滚动的实现
2021-08-29
1522人已围观
简介 这篇文章主要介绍了前端页面弹框遮罩禁止页面滚动,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
前端开发经常会遇到的一个问题就是制作一个弹框来向用户提示信息,在这个弹框弹出的同时,往往会伴有一个灰色的遮罩层挡住页面内容,同时整个页面被这层遮罩盖住,不可点击也不可滚动。

方案一:控制overflow禁止滚动(ios不兼容)
要制作这个效果在PC端非常简单,只需要设置html的高度为100%占满屏幕,并且将html的overflow设置为hidden,即可保证页面不可滚动。
但是同样的问题在移动端情况就有所区别。仅仅设置html的上列属性,在移动端仍然无法禁止页面超出部分的滚动,我们需要设置下面的代码才能在弹框出现的时候禁止页面滚动:
html.style.overflow="hidden"; html.style.height="100%"; body.style.overflow="hidden"; body.style.height="100%";
原因是因为移动端是基于touch事件,要禁止基于touch事件的滚动,我们必须在对html禁止滚动的基础之上,再将需要禁止滚动的内容上再增加一个包裹层块级元素,然后将这个包裹层块级元素高度设置为100%并设置overflow:hidden;,那么在这里我们认为body包裹了整个页面,正是我们需要的块级元素,将他也设置为禁止滚动,就可以保证移动端页面的滑动时间不会触发页面滚动。
当用户关闭了弹框,页面也就恢复正常,我们设置如下CSS样式属性来还原整个页面的滚动效果:
html.style.overflow="visible"; html.style.height="auto"; body.style.overflow="visible"; body.style.height="auto";
这些样式正是对应CSS属性的默认样式。
然而这个方案有一个缺陷,就是ios系统下不兼容,黑幕的效果没法阻止页面的滚动。下面介绍移动端的另一种解决方案。
方案二:绝对/固定布局阻止手势滚动事件冒泡(PC端无效)
正是因为移动端的滚动基于屏幕的touch事件,因此诞生了方案二(手机淘宝就使用了这种方案)。
首先我们需要知道两个前提知识点:1、重叠的两个页面元素,z-index值更高的会优先触发事件监听,从而可以在此控制是否让事件流继续;2、移动端滚动的touch事件,基于事件流。
有了上面两个知识点的基础,我们就可以来理解这种方案的设计思路。方案二的原理是:不对原页面进行任何改动,仅仅只是用一个拥有更高z-index值的,布局为absolute或者fixed布局的黑幕(长宽100%)来挡住整个页面,并且监听黑幕的touchstart事件,在touchstart事件内结束事件流,从而阻挡事件流继续。这样,能够产生滚动效果的touch事件就传不到页面上,也就不会发生滚动。

下面贴上方案二的完整测试源代码:
到此这篇关于前端页面弹框遮罩禁止页面滚动的文章就介绍到这了,更多相关弹框遮罩禁止页面滚动内容请搜索以前的文章或继续浏览下面的相关文章,希望大家以后多多支持!
相关内容
- 纯html+css实现奥运五环的示例代码HTML+CSS实现导航条下拉菜单的示例代码html+css实现滚动到元素位置显示加载动画效果纯html+css实现打字效果html+css实现环绕倒影加载特效html css3不拉伸图片显示效果HTML+CSS 实现顶部导航栏菜单制作使用Html+Css实现简易导航栏功能(导航栏遇到鼠标切换背景颜色)
- HTML+CSS实现导航条下拉菜单的示例代码HTML+CSS 实现顶部导航栏菜单制作Html+Css+Jquery实现左侧滑动拉伸导航菜单栏的示例代码CSS导航条菜单之带小三角形的实现代码css制作黑色经典导航下拉菜单基于CSS3制作立体效果导航菜单纯CSS实现的三级导航菜单效果代码
- 纯html+css实现打字效果html css3不拉伸图片显示效果利用html+css实现菜单栏缓慢下拉效果的示例代码使用HTML和CSS实现的标签云效果(附demo)html+css+js实现导航栏滚动渐变效果 html+css实现响应式卡片悬停效果CSS3+HTML5+JS 实现一个块的收缩与展开动画效果HTML+CSS+JS模仿win10亮度调节效果的示例代码css+html实现Skeleton Screen 加载占位图动画效果(带动画)
- html+css实现环绕倒影加载特效巧用 CSS3的webkit-box-reflect 倒影实现各类动效通过一张图教会你CSS3倒影的实现CSS3 Notes: -webkit-box-reflect实现倒影的实例用CSS3的box-reflect来制作倒影效果5分钟让你掌握css3阴影、倒影、渐变小技巧(小编推荐)用CSS3的box-reflect设置文字倒影效果的方法讲解CSS3制作文字半透明倒影效果的两种实现方式CSS图片倒影效果兼容firefox、IE等各主流浏览器
- html中显示特殊符号(附带特殊字符对应表)浅谈html特殊字符 编码css3 content:"我是特殊符号"html特殊符号示例 html特殊字符编码对照表网页html 特殊符号 html特殊字符对照表
- 关于html选择框创建占位符的问题HTML页面自适应宽度的table(表格)HTML5 body设置自适应全屏html5移动端自适应布局的实现HTML5 textarea高度自适应的两种方案
- html css3不拉伸图片显示效果Html+Css+Jquery实现左侧滑动拉伸导航菜单栏的示例代码CSS实现HTML背景图片拉伸铺满示例
- HTML+CSS 实现顶部导航栏菜单制作CSS 带搜索导航栏的示例代码html+css+js实现导航栏滚动渐变效果html+css 实现简易导航栏功能纯CSS实现导航栏下划线跟随的示例代码CSS+HTML 实现顶部导航栏功能
- CSS极坐标的实例代码纯html+css实现Element loading效果纯html+css实现奥运五环的示例代码HTML+CSS实现导航条下拉菜单的示例代码html+css实现滚动到元素位置显示加载动画效果纯html+css实现打字效果html+css实现环绕倒影加载特效html输入两个数实现加减乘除功能html中显示特殊符号(附带特殊字符对应表)关于html选择框创建占位符的问题html css3不拉伸图片显示效果
- html+css实现文字折叠特效实例html+css3实现的登录界面HTML+CSS3+JS 实现的下拉菜单CSS3+HTML5+JS 实现一个块的收缩与展开动画效果HTML+CSS+JavaScript实现图片3D展览的示例代码详解HTML5中CSS外观属性HTML+CSS+JS实现堆叠轮播效果的示例代码HTML5+CSS设置浮动却没有动反而在中间且错行的问题css+html实现Skeleton Screen 加载占位图动画效果(带动画)
