JQuery 遮罩层实现(mask)实现代码


Posted in Javascript onJanuary 09, 2010

其中有mask()和unmask()这两个方法,这两个方法在指定的元素上添加一个遮罩层和一个提示消息实现,增加客户体验。由于最近做项目的时候,发现有时为了使用这一两个方法需要引入一个比较“庞大”的Extjs进来,觉得有点不划算,于是自己用jquery实现了一个比较简单mask、unmask方法来实现该效果。大家知道jquery是一个优秀的javascript框架,不但体积小而且使用方便,我现在逐渐将系统中使用Extjs实现的代码或组建全部更换成Jquery来实现。好了不多说,上我的代码,这些代码是根据网上的一位朋友实现的documentMask基础上进行整改的。使使用上更加灵活方便了。
(没什么技术含量,旨在为那些需要的朋友提供帮助)

(function(){ 
$.extend($.fn,{ 
mask: function(msg,maskDivClass){ 
this.unmask(); 
// 参数 
var op = { 
opacity: 0.8, 
z: 10000, 
bgcolor: '#ccc' 
}; 
var original=$(document.body); 
var position={top:0,left:0}; 
if(this[0] && this[0]!==window.document){ 
original=this; 
position=original.position(); 
} 
// 创建一个 Mask 层,追加到对象中 
var maskDiv=$('<div class="maskdivgen"> </div>'); 
maskDiv.appendTo(original); 
var maskWidth=original.outerWidth(); 
if(!maskWidth){ 
maskWidth=original.width(); 
} 
var maskHeight=original.outerHeight(); 
if(!maskHeight){ 
maskHeight=original.height(); 
} 
maskDiv.css({ 
position: 'absolute', 
top: position.top, 
left: position.left, 
'z-index': op.z, 
width: maskWidth, 
height:maskHeight, 
'background-color': op.bgcolor, 
opacity: 0 
}); 
if(maskDivClass){ 
maskDiv.addClass(maskDivClass); 
} 
if(msg){ 
var msgDiv=$('<div style="position:absolute;border:#6593cf 1px solid; padding:2px;background:#ccca"><div style="line-height:24px;border:#a3bad9 1px solid;background:white;padding:2px 10px 2px 10px">'+msg+'</div></div>'); 
msgDiv.appendTo(maskDiv); 
var widthspace=(maskDiv.width()-msgDiv.width()); 
var heightspace=(maskDiv.height()-msgDiv.height()); 
msgDiv.css({ 
cursor:'wait', 
top:(heightspace/2-2), 
left:(widthspace/2-2) 
}); 
} 
maskDiv.fadeIn('fast', function(){ 
// 淡入淡出效果 
$(this).fadeTo('slow', op.opacity); 
}) 
return maskDiv; 
}, 
unmask: function(){ 
var original=$(document.body); 
if(this[0] && this[0]!==window.document){ 
original=$(this[0]); 
} 
original.find("> div.maskdivgen").fadeOut('slow',0,function(){ 
$(this).remove(); 
}); 
} 
}); 
})();

下面是使用实例代码可供参考
代码
<html> 
<head> 
<style> 
body{ 
font-size:12px; 
} 
</style> 
<script src="http://img.3water.com/jslib/jquery/jquery-1.3.2.js" type="text/javascript"></script> 
<script type="text/javascript"> 
(function(){ 
$.extend($.fn,{ 
mask: function(msg,maskDivClass){ 
this.unmask(); 
// 参数 
var op = { 
opacity: 0.8, 
z: 10000, 
bgcolor: '#ccc' 
}; 
var original=$(document.body); 
var position={top:0,left:0}; 
if(this[0] && this[0]!==window.document){ 
original=this; 
position=original.position(); 
} 
// 创建一个 Mask 层,追加到对象中 
var maskDiv=$('<div class="maskdivgen"> </div>'); 
maskDiv.appendTo(original); 
var maskWidth=original.outerWidth(); 
if(!maskWidth){ 
maskWidth=original.width(); 
} 
var maskHeight=original.outerHeight(); 
if(!maskHeight){ 
maskHeight=original.height(); 
} 
maskDiv.css({ 
position: 'absolute', 
top: position.top, 
left: position.left, 
'z-index': op.z, 
width: maskWidth, 
height:maskHeight, 
'background-color': op.bgcolor, 
opacity: 0 
}); 
if(maskDivClass){ 
maskDiv.addClass(maskDivClass); 
} 
if(msg){ 
var msgDiv=$('<div style="position:absolute;border:#6593cf 1px solid; padding:2px;background:#ccca"><div style="line-height:24px;border:#a3bad9 1px solid;background:white;padding:2px 10px 2px 10px">'+msg+'</div></div>'); 
msgDiv.appendTo(maskDiv); 
var widthspace=(maskDiv.width()-msgDiv.width()); 
var heightspace=(maskDiv.height()-msgDiv.height()); 
msgDiv.css({ 
cursor:'wait', 
top:(heightspace/2-2), 
left:(widthspace/2-2) 
}); 
} 
maskDiv.fadeIn('fast', function(){ 
// 淡入淡出效果 
$(this).fadeTo('slow', op.opacity); 
}) 
return maskDiv; 
}, 
unmask: function(){ 
var original=$(document.body); 
if(this[0] && this[0]!==window.document){ 
original=$(this[0]); 
} 
original.find("> div.maskdivgen").fadeOut('slow',0,function(){ 
$(this).remove(); 
}); 
} 
}); 
})(); 
</script> 
</head> 
<body style="width:100%"> 
测试 
<div id="test" style="width:200px;height:100px; border:black 1px solid;"> 
</div> 
<a href="#" onclick="$('#test').mask('DIV层遮罩')">div遮罩</a> 
<a href="#" onclick="$('#test').unmask()">关闭div遮罩</a> 
<a href="#" onclick="$(document).mask('全屏遮罩').click(function(){$(document).unmask()})">全部遮罩</a> 
</body> 
</html>
Javascript 相关文章推荐
jquery获取select选中值的方法分析
Dec 22 Javascript
javascript事件冒泡简单示例
Jun 20 Javascript
jQuery图片轮播实现并封装(一)
Dec 03 Javascript
Angular的$http与$location
Dec 26 Javascript
jQuery实现的浮动层div浏览器居中显示效果
Feb 03 Javascript
Vue路由钩子之afterEach beforeEach的区别详解
Jul 15 Javascript
使用layui 渲染table数据表格的实例代码
Aug 19 Javascript
JS中appendChild追加子节点无效的解决方法
Oct 14 Javascript
详解vue-cli3开发Chrome插件实践
May 29 Javascript
vue-router二级导航切换路由及高亮显示的实现方法
Jul 10 Javascript
JavaScript页面加载事件实例讲解
Sep 01 Javascript
如何用vue实现网页截图你知道吗
Nov 17 Vue.js
Javascript UrlDecode函数代码
Jan 09 #Javascript
JavaScript 页面坐标相关知识整理
Jan 09 #Javascript
了解jQuery技巧来提高你的代码
Jan 08 #Javascript
在html页面上拖放移动标签
Jan 08 #Javascript
利用js获取服务器时间的两个简单方法
Jan 08 #Javascript
JavaScript中的集合及效率
Jan 08 #Javascript
Extjs TriggerField在弹出窗口显示不出问题的解决方法
Jan 08 #Javascript
You might like
详细介绍PHP应用提速面面观
2006/10/09 PHP
一步一步学习PHP(1) php开发环境配置
2010/02/15 PHP
js限制checkbox勾选的个数以及php获取多个checkbbox的方法深入解析
2013/07/18 PHP
php实现在限定区域里自动调整字体大小的类实例
2015/04/02 PHP
PHP基于array_unique实现二维数组去重
2020/07/14 PHP
javascript中的缓动效果实现程序
2012/12/29 Javascript
浅谈javascript六种数据类型以及特殊注意点
2013/12/20 Javascript
jquery图片轮播插件仿支付宝2013版全屏图片幻灯片
2014/04/03 Javascript
JavaScript作用域链示例分享
2014/05/27 Javascript
javascript框架设计读书笔记之模块加载系统
2014/12/02 Javascript
html的DOM中document对象forms集合用法实例
2015/01/21 Javascript
js正则表达式匹配数字字母下划线等
2015/04/14 Javascript
js实现商城星星评分的效果
2015/12/29 Javascript
AngularJS基础 ng-include 指令示例讲解
2016/08/01 Javascript
自定义require函数让浏览器按需加载Js文件
2016/11/24 Javascript
微信小程序(三):网络请求
2017/01/13 Javascript
JavaScript表单验证实现代码
2017/05/22 Javascript
AngularJS发送异步Get/Post请求方法
2018/08/13 Javascript
vue内置组件component--通过is属性动态渲染组件操作
2020/07/28 Javascript
python采用getopt解析命令行输入参数实例
2014/09/30 Python
python贪婪匹配以及多行匹配的实例讲解
2018/04/19 Python
Django模型修改及数据迁移实现解析
2019/08/01 Python
Django {{ MEDIA_URL }}无法显示图片的解决方式
2020/04/07 Python
python os.rename实例用法详解
2020/12/06 Python
纯CSS实现预加载动画效果
2017/09/06 HTML / CSS
html5的canvas实现3d雪花飘舞效果
2013/12/27 HTML / CSS
使用HTML5 Canvas API绘制弧线的教程
2016/03/22 HTML / CSS
Quiksilver荷兰官方网站:冲浪和滑雪板
2019/11/16 全球购物
暑期实践思想汇报
2014/01/06 职场文书
元旦促销方案
2014/03/15 职场文书
门前三包责任书
2014/04/15 职场文书
《小鹰学飞》教学反思
2014/04/23 职场文书
精神病医院见习报告
2014/11/03 职场文书
小学教师自我评价
2015/03/04 职场文书
2015年营业员工作总结
2015/04/23 职场文书
2015年节能减排工作总结
2015/05/14 职场文书