基于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 相关文章推荐
屏蔽鼠标右键、Ctrl+n、shift+F10、F5刷新、退格键 的javascript代码
Apr 01 Javascript
JavaScript 动态将数字金额转化为中文大写金额
May 14 Javascript
网页自动跳转代码收集
Sep 27 Javascript
javascript AOP 实现ajax回调函数使用比较方便
Nov 20 Javascript
使用命令对象代替switch语句的写法示例
Feb 28 Javascript
javascript实现日期时间动态显示示例代码
Sep 08 Javascript
JS实现异步上传压缩图片
Apr 22 Javascript
使用重写url机制实现验证码换一张功能
Aug 01 Javascript
Vue实现移动端左右滑动效果的方法
Nov 27 Javascript
详解Vue一个案例引发「内容分发slot」的最全总结
Dec 02 Javascript
在JavaScript中如何访问暂未存在的嵌套对象
Jun 18 Javascript
JS代码简洁方式之函数方法详解
Jul 28 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文本转图片自动换行的方法
2013/03/13 PHP
php数组合并的二种方法
2014/03/21 PHP
Codeigniter上传图片出现“You did not select a file to upload”错误解决办法
2014/06/12 PHP
php身份证号码检查类实例
2015/06/18 PHP
PHP将Excel导入数据库及数据库数据导出至Excel的方法
2015/06/24 PHP
Laravel框架实现简单的学生信息管理平台案例
2019/05/07 PHP
Laravel5.5 动态切换多语言的操作方式
2019/10/25 PHP
用javascript作一个通用向导说明
2011/08/30 Javascript
JQuery入门—JQuery程序的代码风格详细介绍
2013/01/03 Javascript
JS实现随机化快速排序的实例代码
2013/08/01 Javascript
js实现格式化金额,字符,时间的方法
2015/02/26 Javascript
node.js中格式化数字增加千位符的几种方法
2015/07/03 Javascript
JS实现控制文本框的内容
2016/07/10 Javascript
分享一道关于闭包、bind和this的面试题
2017/02/20 Javascript
浅谈实现vue2.0响应式的基本思路
2018/02/13 Javascript
详解微信小程序开发用户授权登陆
2019/04/24 Javascript
bootstrap-paginator服务器端分页使用方法详解
2020/02/13 Javascript
vuecli项目构建SSR服务端渲染的实现
2020/10/30 Javascript
[02:51]DOTA2英雄基础教程 风暴之灵
2013/12/23 DOTA
Django中使用locals()函数的技巧
2015/07/16 Python
Python2.7读取PDF文件的方法示例
2017/07/13 Python
Charles&Keith美国官方网站:新加坡快时尚鞋类和配饰零售商
2019/11/27 全球购物
SQL数据库笔试题
2016/03/08 面试题
自荐信怎么写好
2013/11/11 职场文书
共筑中国梦演讲稿
2014/04/23 职场文书
党员活动日总结
2014/05/05 职场文书
我们的节日春节活动方案
2014/08/22 职场文书
职工擅自离岗检讨书
2014/09/23 职场文书
2014年化验室工作总结
2014/11/21 职场文书
复活读书笔记
2015/06/29 职场文书
中学教师教学工作总结
2015/08/13 职场文书
初中物理教学反思
2016/02/19 职场文书
幼儿园语言教学反思
2016/02/23 职场文书
nginx配置文件使用环境变量的操作方法
2021/06/02 Servers
SpringBoot中使用Redis作为全局锁示例过程
2022/03/24 Java/Android
详解Vue3使用axios的配置教程
2022/04/29 Vue.js