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 相关文章推荐
限制复选框的最大可选数
Jul 01 Javascript
jQuery Div中加载其他页面的实现代码
Feb 27 Javascript
JavaScript让IE浏览器event对象符合W3C DOM标准
Nov 24 Javascript
IE和Firefox的Javascript兼容性总结[推荐收藏]
Oct 19 Javascript
jQuery Tools tab使用介绍
Jul 14 Javascript
js添加table的行和列 具体实现方法
Jul 22 Javascript
Array栈方法和队列方法的特点说明
Jan 24 Javascript
使用gulp搭建本地服务器并实现模拟ajax
Apr 05 Javascript
详解Vue中过度动画效果应用
May 25 Javascript
Vue非父子组件通信详解
Jun 12 Javascript
Vue+Jwt+SpringBoot+Ldap完成登录认证的示例代码
May 21 Javascript
JavaScript Blob对象原理及用法详解
Oct 14 Javascript
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
给apache2.2加上mod_encoding模块後 php5.2.0 处理url出现bug
2007/04/12 PHP
在mysql数据库原有字段后增加新内容
2009/11/26 PHP
PHP使用SOAP调用.net的WebService数据
2013/11/12 PHP
PHP中isset与array_key_exists的区别实例分析
2015/06/02 PHP
PHP实现验证码校验功能
2017/11/16 PHP
laravel实现简单用户权限的示例代码
2019/05/28 PHP
Jquery练习之表单验证实现代码
2010/12/14 Javascript
javascript实现左右控制无缝滚动
2014/12/31 Javascript
JavaScript中Window对象的属性及事件
2015/12/25 Javascript
bootstrap-treeview自定义双击事件实现方法
2016/01/09 Javascript
jQuery的each循环用法简单示例
2016/06/12 Javascript
jQuery简单实现点击文本框复制内容到剪贴板上的方法
2016/08/01 Javascript
canvas实现环形进度条效果
2017/03/23 Javascript
Vuepress 搭建带评论功能的静态博客的实现
2019/02/17 Javascript
如何在JavaScript中优雅的提取循环内数据详解
2019/03/04 Javascript
JS工厂模式开发实践案例分析
2019/10/17 Javascript
[01:01:04]2018DOTA2亚洲邀请赛 4.5 淘汰赛 OpTic vs TNC 第一场
2018/04/06 DOTA
Python基本数据类型详细介绍
2014/03/11 Python
python数据结构之列表和元组的详解
2017/09/23 Python
Android分包MultiDex策略详解
2017/10/30 Python
Mac下Anaconda的安装和使用教程
2018/11/29 Python
5分钟 Pipenv 上手指南
2018/12/20 Python
Python实现监控Nginx配置文件的不同并发送邮件报警功能示例
2019/02/26 Python
关于numpy.where()函数 返回值的解释
2019/12/06 Python
python下载的库包存放路径
2020/07/27 Python
MySQL面试题
2014/01/12 面试题
会议接待欢迎词
2014/01/12 职场文书
承认错误的检讨书
2014/01/30 职场文书
勤俭节约倡议书
2014/04/14 职场文书
公司担保书格式范文
2014/05/12 职场文书
市场营销专业自荐书
2014/06/10 职场文书
五一促销活动总结
2014/07/01 职场文书
故意伤害辩护词
2015/05/21 职场文书
Python离线安装openpyxl模块的步骤
2021/03/30 Python
css 边框添加四个角的实现代码
2021/10/16 HTML / CSS
css3新特性的应用示例分析
2022/03/16 HTML / CSS