Posted in Javascript onAugust 21, 2010
经过几多周折,终于搞出来了,效果图如下:
具体实现:
(1) 编写 jquery.divbox.js 的代码:
jQuery.fn.extend( { OpenDiv: function() { var sWidth, sHeight; sWidth = window.screen.availWidth; if (window.screen.availHeight > document.body.scrollHeight) { sHeight = window.screen.availHeight; } else { sHeight = document.body.scrollHeight + 20; } var maskObj = document.createElement("div"); maskObj.setAttribute('id', 'BigDiv'); maskObj.style.position = "absolute"; maskObj.style.top = "0"; maskObj.style.left = "0"; maskObj.style.background = "#111"; maskObj.style.filter = "Alpha(opacity=70);"; maskObj.style.opacity = "0.7"; maskObj.style.width = sWidth + "px"; maskObj.style.height = sHeight + "px"; maskObj.style.zIndex = "10000"; $("body").attr("scroll", "no"); document.body.appendChild(maskObj); $("#BigDiv").data("divbox_selectlist", $("select:visible")); $("select:visible").hide(); $("#BigDiv").attr("divbox_scrolltop", $.ScrollPosition().Top); $("#BigDiv").attr("divbox_scrollleft", $.ScrollPosition().Left); $("#BigDiv").attr("htmloverflow", $("html").css("overflow")); $("html").css("overflow", "hidden"); window.scrollTo($("#BigDiv").attr("divbox_scrollleft"), $("#BigDiv").attr("divbox_scrolltop")); var MyDiv_w = this.width(); var MyDiv_h = this.height(); MyDiv_w = parseInt(MyDiv_w); MyDiv_h = parseInt(MyDiv_h); var width = $.PageSize().Width; var height = $.PageSize().Height; var left = $.ScrollPosition().Left; var top = $.ScrollPosition().Top; var Div_topposition = top + (height / 2) - (MyDiv_h / 2); var Div_leftposition = left + (width / 2) - (MyDiv_w / 2); this.css("position", "absolute"); this.css("z-index", "10001"); this.css("background", "#fff"); this.css("left", Div_leftposition + "px"); this.css("top", Div_topposition + "px"); if ($.browser.mozilla) { this.show(); return; } this.fadeIn("fast"); } , CloseDiv: function() { if ($.browser.mozilla) { this.hide(); } else { this.fadeOut("fast"); } $("html").css("overflow", $("#BigDiv").attr("htmloverflow")); window.scrollTo($("#BigDiv").attr("divbox_scrollleft"), $("#BigDiv").attr("divbox_scrolltop")); $("#BigDiv").data("divbox_selectlist").show(); $("#BigDiv").remove(); } }); $.extend( { PageSize:function () { var width=0; var height=0; width=window.innerWidth!=null?window.innerWidth:document.documentElement&&document.documentElement.clientWidth?document.documentElement.clientWidth:document.body!=null?document.body.clientWidth:null; height=window.innerHeight!=null?window.innerHeight:document.documentElement&&document.documentElement.clientHeight?document.documentElement.clientHeight:document.body!=null?document.body.clientHeight:null; return {Width:width,Height:height}; } ,ScrollPosition:function () { var top=0,left=0; if($.browser.mozilla) { top=window.pageYOffset; left=window.pageXOffset; } else if($.browser.msie) { top=document.documentElement.scrollTop; left=document.documentElement.scrollLeft; } else if(document.body) { top=document.body.scrollTop; left=document.body.scrollLeft; } return {Top:top,Left:left}; } });
(2) 网页中需引用两个js, jquery.divbox.js 和 jquery.js
(3) 测试页面代码:
<html> <head> <title>测试</title> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <script type="text/javascript" src="js/jquery.js"></script> <script type="text/javascript" src="js/jquery.divbox.js"></script> <style> #divSCA { position: absolute; width: 700px; height: 500px; font-size: 12px; background: #fff; border: 0px solid #000; z-index: 10001; display: none; } </style> <script type="text/javascript"> function openDiv() { $("#divSCA").OpenDiv(); } function closeDiv() { $("#divSCA").CloseDiv(); } </script> </head> <body> <div id="divSCA"> <font size="50">这是模态DIV,点击关闭</font> <input type="button" value="关闭" onclick="closeDiv()"> </div> <input type="button" value="弹出" onclick="openDiv()"/> 测试能否覆盖 select <select> <option>测试1</option> <option>测试2</option> <option>测试3</option> </select> </body> </html>
(4) 测试代码及源文件下载地址:
点击下载
基于jquery的模态div层弹出效果
声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
Reply on: @reply_date@
@reply_contents@