基于jquery的模态div层弹出效果


Posted in Javascript onAugust 21, 2010

经过几多周折,终于搞出来了,效果图如下:
基于jquery的模态div层弹出效果
具体实现:
(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) 测试代码及源文件下载地址:

点击下载

Javascript 相关文章推荐
再谈ie和firefox下的document.all属性
Oct 21 Javascript
javascript解析json数据的3种方式
May 08 Javascript
document.forms用法示例介绍
Jun 26 Javascript
实例讲解jquery与json的结合
Jan 07 Javascript
Javascript随机标签云代码实例
Jun 21 Javascript
JS如何设置元素样式的方法示例
Aug 28 Javascript
vue异步加载高德地图的实现
Jun 19 Javascript
利用Promise自定义一个GET请求的函数示例代码
Mar 20 Javascript
对layui初始化列表的CheckBox属性详解
Sep 13 Javascript
JavaScript 作用域实例分析
Oct 02 Javascript
js+canvas实现两张图片合并成一张图片的方法
Nov 01 Javascript
Vue路由 重定向和别名的区别说明
Sep 09 Javascript
ExtJs 表单提交登陆实现代码
Aug 19 #Javascript
ExtJs中简单的登录界面制作方法
Aug 19 #Javascript
filters.revealTrans.Transition使用方法小结
Aug 19 #Javascript
JS面向对象编程之对象使用分析
Aug 19 #Javascript
JavaScript中各种编码解码函数的区别和注意事项
Aug 19 #Javascript
jquery插件之easing使用
Aug 19 #Javascript
为Extjs加加速(javascript加速)
Aug 19 #Javascript
You might like
上传文件先创建目录 再上传到目录里面去
2010/12/29 PHP
PHP调用wsdl文件类型的接口代码分享
2014/11/19 PHP
php简单构造json多维数组的方法示例
2017/06/08 PHP
PHP实现的贪婪算法实例
2017/10/17 PHP
PHP简单实现循环链表功能示例
2017/11/10 PHP
PHP ADODB生成下拉列表框功能示例
2018/05/29 PHP
PHP的图像处理实例小结【文字水印、图片水印、压缩图像等】
2019/12/20 PHP
JavaScript Tips 使用DocumentFragment加快DOM渲染速度
2010/06/28 Javascript
纯JS实现根据CSS的class选择DOM
2014/03/22 Javascript
动态加载js文件简单示例
2016/04/21 Javascript
基于Bootstrap+jQuery.validate实现表单验证
2016/05/30 Javascript
深入理解jQuery3.0的domManip函数
2016/09/01 Javascript
jQuery实现最简单实用的分秒倒计时
2017/02/05 Javascript
ES6入门教程之let和const命令详解
2017/05/17 Javascript
React-Native中props具体使用详解
2017/09/04 Javascript
基于Vue中点击组件外关闭组件的实现方法
2018/03/06 Javascript
p5.js入门教程之键盘交互
2018/03/19 Javascript
一个Vue页面的内存泄露分析详解
2018/06/25 Javascript
js中apply和call的理解与使用方法
2019/11/27 Javascript
小程序接入腾讯位置服务的详细流程
2020/03/03 Javascript
python 出现SyntaxError: non-keyword arg after keyword arg错误解决办法
2017/02/14 Python
python求质数的3种方法
2018/09/28 Python
解决Python运行文件出现out of memory框的问题
2018/12/03 Python
Python中的异常处理try/except/finally/raise用法分析
2019/02/28 Python
详解PyCharm+QTDesigner+PyUIC使用教程
2019/06/13 Python
python3.6根据m3u8下载mp4视频
2019/06/17 Python
python中的线程threading.Thread()使用详解
2019/12/17 Python
Python坐标轴操作及设置代码实例
2020/06/04 Python
利用纯CSS3实现文字向右循环闪过效果实例(可用于移动端)
2017/06/15 HTML / CSS
欧舒丹英国官网:购买欧舒丹护手霜等明星产品
2017/01/17 全球购物
在网上学习全世界最好的课程:Coursera
2017/11/07 全球购物
YSL圣罗兰美妆英国官网:Yves Saint Laurent Beauty UK
2019/08/03 全球购物
优秀本科生求职推荐信
2014/02/24 职场文书
献爱心捐款倡议书
2014/05/14 职场文书
外贸采购员岗位职责
2015/04/03 职场文书
校运会通讯稿
2015/07/18 职场文书