首页 / 脚本样式 / JavaScript / jquery.Jwin.js 基于jquery的弹出层插件代码
代码如下: 复制代码 代码如下: (function ($) { var imgdir = "images/";//图片文件夹路径 var autoHide=false;//悬浮div是否自动隐藏 var hideType="hide";//隐藏的方式 可选参数 hide、slide、fade var hideDelay=0;//悬浮div隐藏过程使用的时间 var hideTime=0;//悬浮div延迟隐藏时间 var zIndex=100;//多个div时获取焦点的div处于顶层 var showType="show";//悬浮div显示方式 可选参数 hide、slide、fade var showTime=0;//悬浮div显示过程使用的时间 var showDelay=0;//悬浮div延迟显示的时间 //以下两个变量用于保证div被拖动后隐藏 再次打开后出现的位置仍然为首次出现的位置 var oldTop="";//保存div初次出现的top var oldLeft="";//保存div初次出现的left $.fn.extend({ Jwin:function(option){ var op=$.extend({ id:"",//悬浮div的id (必须) title: "",//标题 message:"",//显示信息 elementId:"",//显示元素的id url: "",//显示的页面地址 width: 400,//悬浮div的宽度 height: 300,//悬浮div的高度 //悬浮div显示参数 showType:"show",//悬浮div显示方式 可选参数 hide、slide、fade showTime:0,//悬浮div显示过程使用的时间 showDelay:0,//悬浮div延迟显示的时间 //悬浮div隐藏参数 autoHide:false,//悬浮div是否自动隐藏 hideType:"hide",//隐藏的方式 可选参数 hide、slide、fade hideTime:0,//悬浮div隐藏过程使用的时间 hideDelay:0,//悬浮div自动隐藏延迟时间 },option); if(op.id==""){ alert("缺少WinId"); return; } autoHide=op.autoHide; hideType=op.hideType; hideDelay=op.hideDelay; hideTime=op.hideTime; showType=op.showType; showTime=op.showTime; showDelay=op.showDelay; zIndex=zIndex+1; var winEle=$("#"+op.id); if(winEle.length==0){ this.width = parseInt(op.width); this.height = parseInt(op.height); var banner=this.JwinCreatBanner(op.id,this.width,op.title); oldTop = this.height >= document.documentElement.clientHeight ? 0 : (document.documentElement.clientHeight-this.height)/2; oldLeft = this.width >= document.body.clientWidth ? 0 : (document.body.clientWidth-this.width)/2; win=$("<div id="" + op.id + ""></div>"); win.css({"position":"absolute","top":oldTop,"left":oldLeft,"width":(this.width+2),"zIndex":zIndex,"display":"none"}); win.html(banner); win.find("#close").bind("click",function(){$(this).JwinClose(op.id);}); win.find("#bannerMiddle").bind("mousedown",function(){$(this).JwinMove(op.id);}); var container=$("<div id="" + op.id + "_con"></div>"); container.css({"float":"left","width":+this.width,"height":this.height,"word-break":"break-all","overflow-x":"hidden","overflow-y":"auto","border":"1px solid #1972e1","background-color":"#FFF","clear":"both"}); if(op.message.length>0){ container.append(op.message); } else if(op.url.length>0){ var iframe=$("<iframe frameborder="0"></iframe>"); iframe.css({"width":"100%","height":"100%","overflow":"visible","border":"0"}); iframe.attr("src",op.url); container.append(iframe); } else if(op.elementId.length>0){ var element=$("#"+op.elementId); if(element){ container.append(element); element.show(); } } win.append(container); $(document.body).append(win); this.JwinShow(win); //是否设置自动关闭 if(autoHide){ this.JwinHide(op.id); } } else{ winEle.css({"zIndex":(winEle.css("zIndex")+2),"top":oldTop,"left":oldLeft}); this.JwinShow(winEle); } }, //创建标题 JwinCreatBanner:function(winId,width,title){ var bannerImddleWidth = width-47;//拖动部分div宽度为总宽度减去两边圆角宽度、关闭按钮宽度 var banner = "<div style="folat:left;width:"+(width+2)+";clear:both;font-size:14px;font:Arial,Helvetica,sans-serif;color:#FFF;">"; banner += "<div style="width:14px;height:30px;line-height:30px;float:left;background:url("+imgdir+"windows_banner_left.gif) no-repeat;"></div>"; banner += "<div id="bannerMiddle" style="width:"+bannerImddleWidth+"px;height:30px;float:left;line-height:30px;cursor:move;float:left;text-align:left;background:url("+imgdir+"windows_banner.gif) repeat-x;" >"+title+"</div>"; banner += "<div style="width:21px;height:30px;line-height:30px;float:left;background:url("+imgdir+"windows_banner.gif) repeat-x;"><img style="border:0;margin-top:4px;" id="close" src=""+imgdir+"win_close_normal.gif" onmouseover="this.src=""+imgdir+"win_close_hover.gif"" onmouseout="this.src=""+imgdir+"win_close_normal.gif"" /></div>"; banner += "<div style="width:14px;height:30px;line-height:30px;float:left;background:url("+imgdir+"windows_banner_right.gif) no-repeat;"></div>"; banner += "</div>"; return banner; }, //拖动 JwinMove:function(winId){ var floatWin=document.getElementById(winId); zIndex=zIndex+1; floatWin.style.zIndex=zIndex; o=window.event.srcElement||window.event.target; var d=document; var a=window.event; var x=a.layerX?a.layerX:a.offsetX; var y=a.layerY?a.layerY:a.offsetY; if(o.setCapture){ o.setCapture(); } else if(window.captureEvents){ window.captureEvents(Event.MOUSEMOVE|Event.MOUSEUP); } d.onmousemove=function(a){ if(!a)a=window.event; if(!a.pageX)a.pageX=a.clientX; if(!a.pageY)a.pageY=a.clientY; var tx=a.pageX-x,ty=a.pageY-y; var maxx=document.documentElement.clientWidth-floatWin.clientWidth; var maxy=document.documentElement.clientHeight-floatWin.clientHeight; tx=(tx<0)?0:tx; ty=(ty<0)?0:ty; tx=(tx>maxx)?maxx:tx; ty=(ty>maxy)?maxy:ty; floatWin.style.left=tx; floatWin.style.top=ty; }; d.onmouseup=function(){ if(o.releaseCapture){ o.releaseCapture(); } else if(window.captureEvents){ window.captureEvents(Event.MOUSEMOVE|Event.MOUSEUP); } d.onmousemove=null; d.onmouseup=null; }; }, //显示 JwinShow:function(win){ var t = showDelay; switch(showType){ case "slide": setTimeout(function(){win.slideDown(showTime);}, t); break; case "fade": setTimeout(function(){win.fadeIn(showTime);},t); break; default: setTimeout(function(){win.show();},t); break; } }, //隐藏 JwinHide:function(winId,atonce){ var win = $("#"+winId); var t = atonce ? 0 : hideDelay; switch(hideType){ case "slide": setTimeout(function(){win.slideUp(hideTime);}, t); break; case "fade": setTimeout(function(){win.fadeOut(hideTime);},t); break; default: setTimeout(function(){win.hide();},t); break; } }, //关闭 JwinClose:function(winId){ this.JwinHide(winId,true); } }); })(jQuery)
收藏该网址