弹出层,阻止页面滚动--阻止事件冒泡

今天要实现一个效果:点击图片后弹出一个浮层,该浮层内容比较多,设置overflow:auto;希望浮层滚动的时候,底层的页面是不动的。在网上查了很多,都没有找到解决方案,有人在问,但是并没有人回答。所以特地跑去问了师傅,在这里分享一下,希望遇到同样问题的小白,可以有所帮助。

首先,把底层页面放在一个div中,包起来,设置它的css样式:

1 #main{
2     position: fixed;
3     width: 100%;
4     top:0;
5     height:100%;
6     z-index:1;
7     overflow: auto;
8 }

(其中,z-index的值根据自身情况设定。)

然后,把要弹出的浮层也放在一个div中,并为其设置css样式:

1 #Tan{
2     position: fixed;
3     width: 100%;
4     top:0;
5     display:none;
6     height:100%;
7     z-index: 2999;
8     overflow: auto;
9 }

(同样,z-index值根据自身情况设定)

最后,就是js代码部分:

1 document.getElementById(floatLayer).addEventListener(‘DOMMouseScroll‘,function(event){
2
3     event.stopPropagation();
4
5 },false);

给弹出层添加一个滚轮事件 DOMMouseScroll

剩下的就是用javascript设置页面的display,实现页面的出现和消息。

时间: 2024-11-08 19:08:21

弹出层,阻止页面滚动--阻止事件冒泡的相关文章

实现移动端弹出层弹出的时候页面不能滑动,关闭弹出层时页面恢复滑动

思路是:显示弹层时,禁用触摸事件 在你显示弹出框的时候:添加: function ShowDiv() { window.ontouchmove = function(e) { e.preventDefault && e.preventDefault(); e.returnValue = false; e.stopPropagation && e.stopPropagation(); return false; } } 在关闭弹层时,添加: function CloseDiv

js的事件冒泡和点击其他区域隐藏弹出层

一.前言 在编写页面的时候,我们经常使用到弹出层.对于弹出层,原本的意义就是增加与用户的交互,提升用户的好感度.如果弹出层都没有较好的体验,那何谈通过交互来提升好感... 首先提出几个弹出层的注意点: 弹出层的界面需要统一,不一致的弹出层并不能增加美感,相反还会显得页面布局更加杂乱无章: 弹出层的设计一定要好看,按钮要符合项目的主色调: 弹出层的宽度固定屏幕占比,设置max-width,高度根据内容自适应: 点击其他区域隐藏弹出层... 二.正文 今天,主要说说点击其他区域隐藏弹出层.笔者被这个

modal 弹出层后禁止底层滚动

看到一篇不错的介绍由弹出层引发对滚动原理的讨论 亲自实验的时候各种坑,都知道在web上处理很简单: html, body{ overflow: hidden; } 1.这样只能解决web上的问题,移动端不管用 2.这样处理仍然会有一些页面宽度适配问题 因为我用在微信公众号开发上(移动端),所以找移动端解决方案, 大部分回答是在弹出层弹出的时候禁用掉触摸事件,弹出层消失的时候再把事件加上: // 记录原来的事件函数,以便恢复 var oldonwheel, oldonmousewheel, old

Javascript实现页面弹出层效果

弹出层效果是一个很实用的功能,很多网站都采用了这种方式实现登录和注册,比如百度: 弹出层的特点:点击登录或注册的时候在页面的中间部分弹出一个登录或注册区域并且页面有一个遮罩层,而且登录框在遮罩层之上,也就是登陆框的z-index值要大于遮罩层的z-index值.当点击关闭或者遮罩层时关闭登录或者注册框(有的网页没有实现点击遮罩层关闭登录或注册区域的功能.). 最近也做了一个类似的弹出层的效果,先展示一下最终效果: 简单的说一下实现的过程. 首先是遮罩层.遮罩层是在页面动态加载的过程中创建的,因为

react 点击空白处隐藏弹出层

点击空白处隐藏弹出层的原理是:在 document 上绑定事件来隐藏弹出层,这样点击任何元素的时候都会冒泡到 document 上,都会执行隐藏弹出层的功能.然后我们在不需要隐藏弹出层的元素上阻止冒泡即可. class Select extends Component { constructor(props) { super(props); this.state = { selected: props.list[0], showList: false }; this.showList = thi

遮罩层和弹出层(居中)

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>居中弹出层</title> </head> <body> <button class="Click">点击</button> <style> body{margin:0;padding:0;} .popWrap{pos

一款基于css3和jquery实现的动画弹出层

今天给大家分享一款基于css3和jquery实现的动画弹出层.这款弹出层初页面面一个显示弹出层按钮.单击该按钮时,弹出层以非常炫的动画形式出现.弹出层有关闭按钮,单击半闭按钮,弹出层关闭.效果图如下: 在线预览   源码下载 实现的代码. html代码: <div class="papersheet"> <!-- Action Trigger --> <div class="papersheet__trigger"> <!-

移动端当弹出层显示,阻止body的滑动

很多时候前端在做移动端有弹出层的时候,滑动屏幕,body还是可以滑动,这些时候就要阻止,话不多说,直接看代码 首先定义一个变量,我这边定义的是stop=1,当弹出层显示,stop=0,然后监听touchmove事件,阻止冒泡和默认行为,这样效果就达到了. document.addEventListener("touchmove", function (e) { if (stop == 0) { e.preventDefault(); e.stopPropagation(); } },

弹出层完美禁止页面滚动

页面中经常会遇到弹出层的部件,当弹出层激活时覆盖整个页面,且背景部分不能滚动.实现起来有以下要点: 弹出层position设置为fixed,四个定位锚点均设为0: 激活弹出层时给html和body设置overflow: hidden;: 以下是实践: codepen 为了让彻底禁止滚动,还可以在mousewheel和touchmove事件(分别对应PC和移动端)中调用preventDefault()方法: function forbidScroll(e) { e.preventDefault &