基于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 相关文章推荐
JS图片浏览组件PhotoLook的公开属性方法介绍和进阶实例代码
Nov 09 Javascript
jQuery-Easyui 1.2 实现多层菜单效果的代码
Jan 13 Javascript
js闭包的用途详解
Nov 09 Javascript
javascript常用代码段搜集
Dec 04 Javascript
Jquery中的$.each获取各种返回类型数据的使用方法
May 03 Javascript
JavaScript检测上传文件大小的方法
Jul 22 Javascript
Node.js连接postgreSQL并进行数据操作
Dec 18 Javascript
Angular5中调用第三方库及jQuery的添加的方法
Jun 07 jQuery
Bootstrap开发中Tab标签页切换图表显示问题的解决方法
Jul 13 Javascript
vue3.0 CLI - 2.6 - 组件的复用入门教程
Sep 14 Javascript
单页面vue引入百度统计的使用方法示例详解
Oct 13 Javascript
layer ui插件显示tips时,修改字体颜色的实现方法
Sep 11 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
PHP文件缓存类实现代码
2015/10/26 PHP
PHP设计模式之装饰器模式定义与用法简单示例
2018/08/13 PHP
PHP设计模式之委托模式定义与用法简单示例
2018/08/13 PHP
javascript 对象比较实现代码
2009/04/27 Javascript
window.onresize 多次触发的解决方法
2013/11/08 Javascript
详解Javascript动态操作CSS
2014/12/08 Javascript
javascript使用shift+click实现选择和反选checkbox的方法
2015/05/04 Javascript
JS 对象(Object)和字符串(String)互转方法
2016/05/20 Javascript
[原创]jQuery常用的4种加载方式分析
2016/07/25 Javascript
快速解决js开发下拉框中blur与click冲突
2016/10/10 Javascript
原生Javascript插件开发实践
2017/01/09 Javascript
javascript过滤数组重复元素的实现方法
2017/05/03 Javascript
JavaScript实现计数器基础方法
2017/10/10 Javascript
vue项目中vue-i18n和element-ui国际化开发实现过程
2018/04/25 Javascript
了解javascript中的Dom操作
2019/05/27 Javascript
关于Vue中$refs的探索浅析
2020/11/05 Javascript
[47:35]VP vs Pain 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/20 DOTA
利用打码兔和超人打码自封装的打码类分享
2014/03/16 Python
python实现爬虫统计学校BBS男女比例(一)
2015/12/31 Python
Python网络编程详解
2017/10/31 Python
python中csv文件的若干读写方法小结
2018/07/04 Python
python numpy数组的索引和切片的操作方法
2018/10/20 Python
python 去除二维数组/二维列表中的重复行方法
2019/01/23 Python
详解Python:面向对象编程
2019/04/10 Python
提升Python程序性能的7个习惯
2019/04/14 Python
使用Python Pandas处理亿级数据的方法
2019/06/24 Python
Python安装selenium包详细过程
2019/07/23 Python
Raleigh兰令自行车美国官网:英国凤头牌自行车
2018/01/08 全球购物
护理专业毕业生推荐信
2013/10/31 职场文书
质量工程师岗位职责
2013/11/16 职场文书
对标管理实施方案
2014/03/12 职场文书
小学生演讲稿大全
2014/04/25 职场文书
自愿解除劳动合同协议书
2014/09/11 职场文书
2014年小学重阳节活动策划方案
2014/09/16 职场文书
银行授权委托书样本
2014/10/13 职场文书
Python借助with语句实现代码段只执行有限次
2022/03/23 Python