基于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 写的简单进度条控件
Jan 22 Javascript
实现png图片和png背景透明(支持多浏览器)的方法
Sep 08 Javascript
JavaScript中两个感叹号的作用说明
Dec 28 Javascript
jquery easyui滚动条部分设置介绍
Sep 12 Javascript
浅谈js中字符和数组一些基本算法题
Aug 15 Javascript
微信小程序 wxapp内容组件 icon详细介绍
Oct 31 Javascript
Vue.extend构造器的详解
Jul 17 Javascript
微信web端后退强制刷新功能的实现代码
Mar 04 Javascript
layui使用表格渲染获取行数据的例子
Sep 13 Javascript
Vue修改项目启动端口号方法
Nov 07 Javascript
vue props对象validator自定义函数实例
Nov 13 Javascript
JavaScript中clientWidth,offsetWidth,scrollWidth的区别
Jan 25 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
window+nginx+php环境配置 附配置搭配说明
2010/12/29 PHP
探讨如何在PHP开启gzip页面压缩实例
2013/06/09 PHP
PHP+MYSQL实现用户的增删改查
2015/03/24 PHP
Zend Framework教程之Zend_Db_Table用法详解
2016/03/21 PHP
PHP钩子与简单分发方式实例分析
2017/09/04 PHP
javascript一些不错的函数脚本代码
2008/09/10 Javascript
js加入收藏夹代码(兼容ie/ff/op)
2014/05/16 Javascript
js文字横向滚动特效
2015/11/11 Javascript
Bootstrap源码解读导航条(7)
2016/12/23 Javascript
微信小程序开发(二)图片上传+服务端接收详解
2017/01/11 Javascript
借助node实战JSONP跨域实例
2017/03/30 Javascript
JavaScript实现QQ列表展开收缩扩展功能
2017/10/30 Javascript
微信小程序云开发之数据库操作
2019/05/18 Javascript
泛谈JS逻辑判断选择器 || &amp;&amp;
2019/05/24 Javascript
[02:28]DOTA2亚洲邀请赛 LGD战队巡礼
2015/02/03 DOTA
Python整型运算之布尔型、标准整型、长整型操作示例
2017/07/21 Python
python3库numpy数组属性的查看方法
2018/04/17 Python
python获取时间及时间格式转换问题实例代码详解
2018/12/06 Python
详解pandas中MultiIndex和对象实际索引不一致问题
2019/07/23 Python
解决在pycharm运行代码,调用CMD窗口的命令运行显示乱码问题
2019/08/23 Python
利用Python小工具实现3秒钟将视频转换为音频
2019/10/29 Python
浅谈pycharm导入pandas包遇到的问题及解决
2020/06/01 Python
keras model.fit 解决validation_spilt=num 的问题
2020/06/19 Python
俄罗斯鲜花递送:AMF
2020/04/24 全球购物
编写函数,将一个3*3矩阵转置
2013/10/09 面试题
怎样在 Applet 中建立自己的菜单(MenuBar/Menu)?
2012/06/20 面试题
英语自我评价范文
2014/01/24 职场文书
信息专业毕业生五年职业规划参考
2014/02/06 职场文书
自我鉴定标准格式
2014/03/19 职场文书
我读书我快乐演讲稿
2014/05/07 职场文书
测控技术自荐信
2014/06/05 职场文书
2014年图书馆个人工作总结
2014/12/18 职场文书
电影复兴之路观后感
2015/06/02 职场文书
导游词之永济鹳雀楼
2020/01/16 职场文书
Element实现动态表格的示例代码
2021/08/02 Javascript
MySQL导致索引失效的几种情况
2022/06/25 MySQL