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 相关文章推荐
JAVASCRIPT函数作用域和提前声明 分享
Aug 22 Javascript
js/jquery判断浏览器类型的方法小结
May 12 Javascript
跟我学习javascript的prototype原型和原型链
Nov 18 Javascript
JQuery的Pager分页器实现代码
May 03 Javascript
jquery获取复选框checkbox的值实现方法
May 30 Javascript
js遍历map javaScript遍历map的简单实现
Aug 26 Javascript
基于Node.js + WebSocket打造即时聊天程序嗨聊
Nov 29 Javascript
js实现延迟加载的几种方法
Apr 24 Javascript
手机注册发送验证码倒计时的简单实例
Nov 15 Javascript
vue mounted 调用两次的完美解决办法
Oct 29 Javascript
浅析Vue 中的 render 函数
Feb 28 Javascript
JQuery+drag.js上传图片并且实现图片拖曳
Nov 18 jQuery
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
星际流派综述
2020/03/04 星际争霸
3
2006/10/09 PHP
php获取目标函数执行时间示例
2014/03/04 PHP
javascript  Error 对象 错误处理
2008/05/18 Javascript
javascript结合html5 canvas实现(可调画笔颜色/粗细/橡皮)的涂鸦板
2013/04/27 Javascript
动态加载jQuery的两种方法实例分析
2015/07/17 Javascript
js简单实现Select互换数据的方法
2015/08/17 Javascript
js实现的后台左侧管理菜单代码
2015/09/11 Javascript
vueJS简单的点击显示与隐藏的效果【实现代码】
2016/05/03 Javascript
JavaScript简单获取页面图片原始尺寸的方法
2016/06/21 Javascript
AngularJs Dependency Injection(DI,依赖注入)
2016/09/02 Javascript
ES6通过babel转码使用webpack使用import关键字
2016/12/13 Javascript
JavaScript数据结构之二叉树的查找算法示例
2017/04/13 Javascript
详解Vue 开发模式下跨域问题
2017/06/06 Javascript
JavaScript解析任意形式的json树型结构展示
2017/07/23 Javascript
Mac 安装 nodejs方法(图文详细步骤)
2017/10/30 NodeJs
微信小程序实现的贪吃蛇游戏【附源码下载】
2018/01/03 Javascript
浅谈Vue 性能优化之深挖数组
2018/12/11 Javascript
JS简单数组排序操作示例【sort方法】
2019/05/17 Javascript
简单了解TypeScript中如何继承 Error 类
2019/06/21 Javascript
使用Python判断IP地址合法性的方法实例
2014/03/13 Python
python smtplib模块发送SSL/TLS安全邮件实例
2015/04/08 Python
关于Python中Inf与Nan的判断问题详解
2017/02/08 Python
pyqt5实现登录界面的模板
2020/05/30 Python
python-pyinstaller、打包后获取路径的实例
2019/06/10 Python
python买卖股票的最佳时机(基于贪心/蛮力算法)
2019/07/05 Python
50行Python代码获取高考志愿信息的实现方法
2019/07/23 Python
Python使用字典实现的简单记事本功能示例
2019/08/15 Python
基于Python实现剪切板实时监控方法解析
2019/09/11 Python
在python中利用pycharm自定义代码块教程(三步搞定)
2020/04/15 Python
Python如何输出警告信息
2020/07/30 Python
python将字典内容写入json文件的实例代码
2020/08/12 Python
大学生工作推荐信范文
2013/12/02 职场文书
交通安全教育心得体会
2016/01/15 职场文书
python 统计代码耗时的几种方法分享
2021/04/02 Python
Spring Cloud OpenFeign模版化客户端
2022/06/25 Java/Android