基于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 相关文章推荐
使用GruntJS链接与压缩多个JavaScript文件过程详解
Aug 02 Javascript
js判断元素是否隐藏的方法
Jun 09 Javascript
JS实现的数组全排列输出算法
Mar 19 Javascript
jquery对dom节点的操作【推荐】
Apr 15 Javascript
jquery实现垂直和水平菜单导航栏
Aug 27 Javascript
JavaScript获取服务器端时间的方法
Nov 29 Javascript
详解vue express启动数据服务
Jul 05 Javascript
微信小程序实现动态改变view标签宽度和高度的方法【附demo源码下载】
Dec 05 Javascript
微信小程序版翻牌小游戏
Jan 26 Javascript
让webpack+vue-cil项目不再自动打开浏览器的方法
Sep 27 Javascript
vue2之简易的pc端短信验证码的问题及处理方法
Jun 03 Javascript
JS性能优化实现方法及优点进行
Aug 30 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
新版mysql+apache+php Linux安装指南
2006/10/09 PHP
PHP中文汉字验证码
2007/04/08 PHP
解析zend Framework如何自动加载类
2013/06/28 PHP
Laravel框架Eloquent ORM简介、模型建立及查询数据操作详解
2019/12/04 PHP
php操作redis数据库常见方法实例总结
2020/02/20 PHP
背景音乐每次刷新都可以自动更换
2007/02/01 Javascript
js调用css属性写法
2013/09/21 Javascript
javascript判断chrome浏览器的方法
2014/03/26 Javascript
Node.js中对通用模块的封装方法
2014/06/06 Javascript
JavaScript常用的返回,自动跳转,刷新,关闭语句汇总
2015/01/13 Javascript
SuperSlide标签切换、焦点图多种组合插件
2015/03/14 Javascript
bootstrap datetimepicker2.3.11时间插件使用
2016/11/19 Javascript
Bootstrap常用组件学习(整理)
2017/03/24 Javascript
基于Vue开发数字输入框组件
2017/12/19 Javascript
React Native基础入门之调试React Native应用的一小步
2018/07/02 Javascript
对Layer UI 模块化的用法详解
2019/09/26 Javascript
JS实现电商商品展示放大镜特效
2020/01/07 Javascript
vue 自定义组件的写法与用法详解
2020/03/04 Javascript
JS实现单张或多张图片持续无缝滚动的示例代码
2020/05/10 Javascript
小程序选项卡以及swiper套用(跨页面)
2020/06/19 Javascript
element-ui tree结构实现增删改自定义功能代码
2020/08/31 Javascript
Python常用的文件及文件路径、目录操作方法汇总介绍
2015/05/21 Python
python中偏函数partial用法实例分析
2015/07/08 Python
Python多线程下载文件的方法
2015/07/10 Python
详解python 字符串和日期之间转换 StringAndDate
2017/05/04 Python
python+matplotlib绘制旋转椭圆实例代码
2018/01/12 Python
tensorflow输出权重值和偏差的方法
2018/02/10 Python
Python日志无延迟实时写入的示例
2019/07/11 Python
Python小程序 控制鼠标循环点击代码实例
2019/10/08 Python
基于CSS3制作立体效果导航菜单
2016/01/12 HTML / CSS
林清轩官方网站:山茶花润肤油开创者
2016/10/26 全球购物
大三在校生电子商务求职信
2013/10/29 职场文书
小学家长会邀请函
2014/01/23 职场文书
小学班级管理心得体会
2016/01/07 职场文书
2016年六一文艺汇演开幕词
2016/03/04 职场文书
阿里云ECS云服务器快照的概念以及如何使用
2022/04/21 Servers