基于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 相关文章推荐
《JavaScript高级程序设计》阅读笔记(三) ECMAScript中的引用类型
Feb 27 Javascript
JS实现自动变换的菜单效果代码
Sep 09 Javascript
使用CoffeeScrip优美方式编写javascript代码
Oct 28 Javascript
DWR中各种java方法的调用
May 04 Javascript
jQuery多文件异步上传带进度条实例代码
Aug 16 Javascript
jQuery插件zTree实现更新根节点中第i个节点名称的方法示例
Mar 08 Javascript
原生JS实现图片懒加载(lazyload)实例
Jun 13 Javascript
解决html input验证只能输入数字,不能输入其他的问题
Jul 21 Javascript
hammer.js实现图片手势放大效果
Aug 29 Javascript
Material(包括Material Icon)在Angular2中的使用详解
Feb 11 Javascript
迅速了解一下ES10中Object.fromEntries的用法使用
Mar 05 Javascript
简单谈谈javascript高级特性
Sep 04 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 中dirname(_file_)讲解
2007/03/18 PHP
MySQL时间字段究竟使用INT还是DateTime的说明
2012/02/27 PHP
php setcookie函数的参数说明及其用法
2014/04/20 PHP
PHP 如何获取二维数组中某个key的集合
2014/06/03 PHP
JavaScript面向对象之Prototypes和继承
2012/07/12 Javascript
js判断变量是否未定义的代码
2020/03/28 Javascript
js函数排序的实例代码
2013/07/01 Javascript
jquery实现勾选复选框触发事件给input赋值
2015/02/01 Javascript
AngularJS页面带参跳转及参数解析操作示例
2017/06/28 Javascript
Vue和Bootstrap的整合思路详解
2017/06/30 Javascript
js通过Date对象实现倒计时动画效果
2017/10/27 Javascript
解决Layui选择全部,换页checkbox复选框重新勾选的问题方法
2018/08/14 Javascript
详解Vue的ref特性的使用
2020/01/24 Javascript
python创建只读属性对象的方法(ReadOnlyObject)
2013/02/10 Python
Python求两个文本文件以行为单位的交集、并集与差集的方法
2015/06/17 Python
总结网络IO模型与select模型的Python实例讲解
2016/06/27 Python
Django的HttpRequest和HttpResponse对象详解
2018/01/26 Python
python3 实现验证码图片切割的方法
2018/12/07 Python
python对象与json相互转换的方法
2019/05/07 Python
python f-string式格式化听语音流程讲解
2019/06/18 Python
Python实现二叉树的最小深度的两种方法
2019/09/30 Python
纯CSS3实现扇形动画菜单(简化版)实例源码
2017/01/17 HTML / CSS
中国最大的潮流商品购物网站:YOHO!BUY有货
2017/01/07 全球购物
说一下Linux下有关用户和组管理的命令
2014/08/18 面试题
直接有效的自我评价
2014/01/11 职场文书
护理毕业生自我鉴定
2014/02/11 职场文书
说明书格式及范文
2014/05/07 职场文书
小组口号大全
2014/06/09 职场文书
欢迎领导检查标语
2014/06/27 职场文书
党员群众路线个人整改措施思想汇报
2014/10/12 职场文书
社区综治工作汇报
2014/10/27 职场文书
教师学习群众路线心得体会
2014/11/04 职场文书
2015年行政工作总结范文
2015/04/09 职场文书
婚庆公司开业主持词
2015/06/30 职场文书
2015国庆节放假通知范文
2015/07/30 职场文书
go mod 安装依赖 unkown revision问题的解决方案
2021/05/06 Golang