Js模拟弹出层(不刷新弹出内容框、图片、登录框)_层和布局特效

模板酷站
  •       3/5
  •       1
  •       2
  •       3
  •       4
  •       5
查看演示效果

      织梦DedeCMS视频教程买空间 租服务器 选网硕互联! 无忧站长工具,百度权重一键全查!

      用JavaScript模拟弹出层,在不刷新页面的情况下,弹出内容框、图片、登录框,类似于Ajax应用的小程序。然后如果内容有图片,则图片预加载后再计算对象高宽。不然自身的高度就不对了,有时候图片把容器撑开了,但是我们在图片没下载完毕之前就获取了当时的容器高度……

      <html xmlns="http://www.w3.org/1999/xhtml" lang="zh-CN" xml:lang="zh-CN"> <head> <meta http-equiv="Content-Type" mrc="text/html; charset=utf-8" /> <title>Js自定义多功能弹窗插件</title> <style type="text/css"> body,p { margin:0; padding:0; } p { padding:10px; } </style> </head> <script type="text/javascript"> var openWin = { $:function(obj,tag){ if(typeof obj=='string'){var obj=document.getElementById(obj);if(!obj)return} if(tag){return obj.getElementsByTagName(tag)} else{return obj} }, wd:function(obj){ this.obj=obj;//指定显示对象 this.oc(1); }, oc:function(o){ if(!o){var o=0;} this.bodyBg(o); this.center(o); this.hs(o); this.hb(o); }, hb:function(o){ if(document.documentElement){document.documentElement.style.overflow=(o==1)?"hidden":"";} else{document.body.style.overflow=(o==1)?"hidden":"";} }, hs:function(o){//第二串:显示隐藏下拉菜单(select) var s=document.getElementsByTagName("select"); if(s[0]=="undefined"){return} for(var i=0;i<s.length;i++){ if(o==1){s[i].style.visibility="hidden";} else{s[i].style.visibility="";} } }, bodyBg:function(o){ if(o==0){document.getElementsByTagName("body")[0].removeChild(this.$("body_pr"));} else{ document.getElementsByTagName("body")[0].style.height="100%"; var style={position:"absolute",left:"0",top:"0",zIndex:"9999",width:"100%",height:"999em",backgroundColor:"#000",filter:"alpha(opacity=50)",opacity:"0.5"}//预置样式用于生成遮罩对象 this.cDiv("body_pr","div",style,document.getElementsByTagName("body")[0]);//5、4、3、2、1 创建! } }, center:function(o){ if(o==0){document.getElementsByTagName("body")[0].removeChild(this.$("center_pr"));} else{ var style={position:"absolute",left:"50%",top:"50%",zIndex:"10000"} this.cDiv("center_pr","div",style,document.getElementsByTagName("body")[0]);//5、4、3、2、1 创建! if(typeof this.obj=='string'){var obj=this.obj;this.$("center_pr").innerHTML=obj;; else{var obj=this.obj.cloneNode(true);this.$("center_pr").appendChild(obj);} openWin.$("center_pr").style.marginTop=-(openWin.$("center_pr").scrollHeight/2)+((window.pageYOffset)?window.pageYOffset:document.documentElement.scrollTop)+"px"; openWin.$("center_pr").style.marginLeft=-(openWin.$("center_pr").scrollWidth/2)+"px"; if(this.$("center_pr").getElementsByTagName("img")[0]){ var objimg=this.$("center_pr").getElementsByTagName("img"); objimg[objimg.length-1].onload=function(){ openWin.$("center_pr").style.marginTop=-(openWin.$("center_pr").scrollHeight/2)+((window.pageYOffset)?window.pageYOffset:document.documentElement.scrollTop)+"px"; openWin.$("center_pr").style.marginLeft=-(openWin.$("center_pr").scrollWidth/2)+"px"; } } } }, cDiv:function(id,tag,style,fid){//创建HTML标签方法 var div=document.createElement(tag);//创建标签对象 div.id=id;//赋予对象ID for(var i in style){div.style[i]=style[i];}//批量插入style属性与属性值 fid.appendChild(div);//插入标签对象到指定对象内 } } </script> <body> <p><img src="http://www.mb5u.com/jscss/demoimg/wall_s5.jpg" alt="点击放大" /></p> <p><button type="button" onclick="openWin.wd('<img src=http://www.mb5u.com/jscss/demoimg/wall5.jpg onclick=openWin.oc() alt=点击关闭 />');">查看大图</button></p> <hr /> <p><button onclick="openWin.wd(openWin.$('box'))" type="button">打开新窗口</button></p> <div id="box" style="padding:10px;border:solid 1px #ccc;background:#fff;"> <p>新窗口</p> <p><button onclick="openWin.oc()" type="button">关闭窗口</button></p> </div> <hr /> <p><button type="button" onclick="openWin.wd('<img src=/jscss/demoimg/loading.gif alt=上传中…… /><p style=text-align:center;padding-top:10px;><span onclick=openWin.oc() style=padding:5px;padding-left:8px;padding-right:8px;padding-bottom:2px;border-style:solid;border-width:1px;border-color:#999;border-top-color:#666;border-left-color:#666;color:#ccc;background:#777;cursor:pointer;font-size:12px;>取消上传</span></p>')">loading</button></p> </body> </html>