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

 更新时间:2010年01月09日 23:26:08   作者:  
用过ExtJs的可能知道在ExtJs中集成了很多的UI元素可以很方便我们的使用。
其中有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">&nbsp;</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.jb51.net/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">&nbsp;</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>

相关文章

  • jQuery实现文章收起与展开功能

    jQuery实现文章收起与展开功能

    这篇文章主要为大家详细介绍了jQuery实现文章收起与展开功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • jQuery获取URL请求参数的方法

    jQuery获取URL请求参数的方法

    这篇文章主要介绍了jQuery获取URL请求参数的方法,涉及jquery针对URL的获取与字符串的操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • jquery 日期控件datepicker属性详细解析

    jquery 日期控件datepicker属性详细解析

    本文是对jquery中日期控件datepicker的属性进行了详细的介绍,需要的朋友可以过来参考下,希望对大家有所帮助
    2013-11-11
  • jquery表单验证插件validation使用方法详解

    jquery表单验证插件validation使用方法详解

    这篇文章主要为大家详细介绍了jquery表单验证插件validation使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01
  • 基于JQuery实现分隔条的功能

    基于JQuery实现分隔条的功能

    这篇文章主要介绍了基于JQuery实现分隔条的功能的相关资料,使用JQuery技术实现分隔条的功能,感兴趣的小伙伴们可以参考一下
    2016-06-06
  • 基于jQuery的JavaScript模版引擎JsRender使用指南

    基于jQuery的JavaScript模版引擎JsRender使用指南

    这篇文章主要介绍了基于jQuery的JavaScript模版引擎JsRender使用指南,需要的朋友可以参考下
    2014-12-12
  • Jquery注册事件实现方法

    Jquery注册事件实现方法

    这篇文章主要介绍了Jquery注册事件实现方法,以实例形式分析了jQuery实现按钮注册鼠标事件的相关技巧,非常简单实用,需要的朋友可以参考下
    2015-05-05
  • JQuery调webservice实现邮箱验证(检测是否可用)

    JQuery调webservice实现邮箱验证(检测是否可用)

    JQuery调webservice实现邮箱验证:判断邮箱是否存在如果不存在提示可以使用否从提示该邮箱已存在请重新输入,感兴趣的朋友可以参下哈,希望对你有所帮助
    2013-05-05
  • JQuery live函数

    JQuery live函数

    给指定id或class的元素绑定(bind)事件时,对于改变或新加的元素,事件不会起作用,这时我们就要用live函数,它可以让子元素继承父元素的事件。
    2010-12-12
  • jQuery 设置 CSS 属性示例介绍

    jQuery 设置 CSS 属性示例介绍

    设置指定的CSS属性或设置多个CSS属性,下面有个不错的示例,大可以参考下
    2014-01-01

最新评论