主页 > 前端 > javascript >
来源:自学PHP网 时间:2016-08-03 16:27 作者: 阅读:次
[导读] 今天工作需要我们需要做一个弹出层,然后我们不单可以点击关闭按钮可以关闭层,同样点击弹出层以外任何地方都可以关闭弹出层。...
我们在web前端开发的过程中,常常会遇到这样的效果,就是我们点击某个元素让层出现,而点击层以外的地方层隐藏,而小编在平时开发过程中也遇到过这样的问题,通过自己的实践得到一个比较好的方法,今天给大家说一说,为了让大家看的清楚,我直接以实例说明。 一.要用到的知识 1.事件冒泡 2.事件对象(e.target和e.srcElement) 二.实例 html代码: <div id=”div1″></div> <input type=”button” value=”点击” id=”btn”/> js代码: window.onload=function() { var oDiv=document.getElementById(“div1″); var oBtn=document.getElementById(“btn”); document.onclick=function(ev) { var e=ev||event; var target=e.target||e.srcElement; if(e.target.id!=’div1′)//事件对象 { oDiv.style.display=”none”; } } oBtn.onclick=function(ev) { var e=ev||event; oDiv.style.display=”block”; if(e && e.stopPropagation){//阻止冒泡 e.stopPropagation(); }else{ window.event.cancelBubble = true; } } } 例2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns=http://www.111cn.net> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>点击文字弹出层</title> <style type="text/css"> <!-- *{font-size:12px;font-family:Verdana, Geneva, sans-serif;line-height:14px} a{color:#039} a:hover{color:#f60} .pop{position:absolute;left:40%;top:40%;width:300px;height:100px;background:#eee;border:1px solid #ccc} .pop_head{position:relative;height:20px;background:#ccc} .pop_head a{position:absolute;right:8px;line-height:20px;color:#000;text-decoration:none} .pop_head a:hover{color:#f60;text-decoration:none} .pop_body{padding:8px} --> </style> </head> <body> <!--首先设置一个层:--> <div id="pop" class="pop" style="display:none"> <div class="pop_head"><a href="javascript:void(0);" onclick="hide()">关闭</a></div> <div class="pop_body">谢谢光临……</div> </div> <!--弹出层的按钮:--> <a href="javascript:void(0);" onclick="show();">弹出按钮</a> <script type="text/javascript"> var EX = { addEvent:function(k,v){ var me = this; if (me.addEventListener) me.addEventListener(k, v, false); else if(me.attachEvent) me.attachEvent("on" + k, v); else me["on" + k] = v; }, removeEvent:function(k,v){ var me = this; if (me.removeEventListener) me.removeEventListener(k, v, false); else if (me.detachEvent) me.detachEvent("on" + k, v); else me["on" + k] = null; }, stop:function(evt){ evt = evt || window.event; evt.stopPropagation?evt.stopPropagation():evt.cancelBubble=true; } }; document.getElementById('pop').onclick = EX.stop; var url = '#'; function show(){ var o = document.getElementById('pop'); o.style.display = ""; setTimeout(function(){EX.addEvent.call(document,'click',hide);}); } function hide(){ var o = document.getElementById('pop'); o.style.display = "none"; EX.removeEvent.call(document,'click',hide); } </script> </body> </html> |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com