jquery实现简单的遮罩层
本文实例讲解了jquery遮罩层,包括遮罩层的不同样式实现、mask实现遮罩层等,分享给大家供大家参考,具体内容如下
一、jQuery实现遮罩层的不同样式
1.1背景半透明遮罩层样式
需要一个黑色(当然也可以其他)背景,且须设置为绝对定位,以下是项目中用到的css样式:
/*半透明的遮罩层*/
#overlay{
background:#000;
filter:alpha(opacity=50);/*IE的透明度*/
opacity:0.5;/*透明度*/
display:none;
position:absolute;
top:0px;
left:0px;
width:100%;
height:100%;
z-index:100;/*此处的图层要大于页面*/
display:none;
}
1.2jQuery实现遮罩
/*显示遮罩层*/
functionshowOverlay(){
$("#overlay").height(pageHeight());
$("#overlay").width(pageWidth());
//fadeTo第一个参数为速度,第二个为透明度
//多重方式控制透明度,保证兼容性,但也带来修改麻烦的问题
$("#overlay").fadeTo(200,0.5);
}
/*隐藏覆盖层*/
functionhideOverlay(){
$("#overlay").fadeOut(200);
}
/*当前页面高度*/
functionpageHeight(){
returndocument.body.scrollHeight;
}
/*当前页面宽度*/
functionpageWidth(){
returndocument.body.scrollWidth;
}
1.3提示框
遮罩的目的无非让人无法操作内容,突出提示框,而提示框可参考上面的制作,z-index比遮罩层更高便可。主要问题是,如何控制提示框在浏览器居中。
/*定位到页面中心*/
functionadjust(id){
varw=$(id).width();
varh=$(id).height();
vart=scrollY()+(windowHeight()/2)-(h/2);
if(t<0)t=0;
varl=scrollX()+(windowWidth()/2)-(w/2);
if(l<0)l=0;
$(id).css({left:l+'px',top:t+'px'});
}
//浏览器视口的高度
functionwindowHeight(){
varde=document.documentElement;
returnself.innerHeight||(de&&de.clientHeight)||document.body.clientHeight;
}
//浏览器视口的宽度
functionwindowWidth(){
varde=document.documentElement;
returnself.innerWidth||(de&&de.clientWidth)||document.body.clientWidth
}
/*浏览器垂直滚动位置*/
functionscrollY(){
varde=document.documentElement;
returnself.pageYOffset||(de&&de.scrollTop)||document.body.scrollTop;
}
/*浏览器水平滚动位置*/
functionscrollX(){
varde=document.documentElement;
returnself.pageXOffset||(de&&de.scrollLeft)||document.body.scrollLeft;
}
二、Jquery超简单遮罩层实现代码
在开发中,为了避免二次提交,遮罩层的运用越来越普遍
看了很多代码,下面跟大家分享一下我认为最简单的遮罩层实现方式:
1.样式如下设置:
CSS代码:
<styletype="text/css">
.mask{
position:absolute;top:0px;filter:alpha(opacity=60);background-color:#777;
z-index:1002;left:0px;
opacity:0.5;-moz-opacity:0.5;
}
</style>
其中:opacity:0.5;适用于IE,-moz-opacit:0.5;适用于火狐;你只需要都加上,便可以火狐和IE下都可以使用。
2.指定层的高度、和宽度
js代码
<preclass="html"name="code"><scripttype="text/javascript">
//兼容火狐、IE8
//显示遮罩层
functionshowMask(){
$("#mask").css("height",$(document).height());
$("#mask").css("width",$(document).width());
$("#mask").show();
}
//隐藏遮罩层
functionhideMask(){
$("#mask").hide();
}
</script>
3.在<body>中加入如下代码,然后就可以看到效果
html代码
<divid="mask"class="mask"></div> <ahref="javascript:;"onclick="showMask()">点我显示遮罩层</a><br/>
4.使用方法
在ajax提交表单后,加上showMask方法,数据返回后,加上hideMask()
需要的亲们可以根据自己需求,在遮罩层上面加一些提示信息
三、发布个JQuery的遮罩层实现(mask)
用过ExtJs的可能知道在ExtJs中集成了很多的UI元素可以很方便我们的使用。其中有mask()和unmask()这两个方法,这两个方法在指定的元素上添加一个遮罩层和一个提示消息实现,增加客户体验。由于最近做项目的时候,发现有时为了使用这一两个方法需要引入一个比较“庞大”的Extjs进来,觉得有点不划算,于是自己用jquery实现了一个比较简单mask、unmask方法来实现该效果。大家知道jquery是一个优秀的javascript框架,不但体积小而且使用方便,我现在逐渐将系统中使用Extjs实现的代码或组建全部更换成Jquery来实现。好了不多说,上我的代码,这些代码是根据网上的一位朋友实现的documentMask基础上进行整改的,使用上更加灵活方便了。
(function(){
$.extend($.fn,{
mask:function(msg,maskDivClass){
this.unmask();
//参数
varop={
opacity:0.8,
z:10000,
bgcolor:'#ccc'
};
varoriginal=$(document.body);
varposition={top:0,left:0};
if(this[0]&&this[0]!==window.document){
original=this;
position=original.position();
}
//创建一个Mask层,追加到对象中
varmaskDiv=$('<divclass="maskdivgen"> </div>');
maskDiv.appendTo(original);
varmaskWidth=original.outerWidth();
if(!maskWidth){
maskWidth=original.width();
}
varmaskHeight=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){
varmsgDiv=$('<divstyle="position:absolute;border:#6593cf1pxsolid;padding:2px;background:#ccca"><divstyle="line-height:24px;border:#a3bad91pxsolid;background:white;padding:2px10px2px10px">'+msg+'</div></div>');
msgDiv.appendTo(maskDiv);
varwidthspace=(maskDiv.width()-msgDiv.width());
varheightspace=(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);
})
returnmaskDiv;
},
unmask:function(){
varoriginal=$(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>
<scriptsrc="jquery-1.3.2.js"type="text/javascript"></script>
<scripttype="text/javascript">
(function(){
$.extend($.fn,{
mask:function(msg,maskDivClass){
this.unmask();
//参数
varop={
opacity:0.8,
z:10000,
bgcolor:'#ccc'
};
varoriginal=$(document.body);
varposition={top:0,left:0};
if(this[0]&&this[0]!==window.document){
original=this;
position=original.position();
}
//创建一个Mask层,追加到对象中
varmaskDiv=$('<divclass="maskdivgen"> </div>');
maskDiv.appendTo(original);
varmaskWidth=original.outerWidth();
if(!maskWidth){
maskWidth=original.width();
}
varmaskHeight=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){
varmsgDiv=$('<divstyle="position:absolute;border:#6593cf1pxsolid;padding:2px;background:#ccca"><divstyle="line-height:24px;border:#a3bad91pxsolid;background:white;padding:2px10px2px10px">'+msg+'</div></div>');
msgDiv.appendTo(maskDiv);
varwidthspace=(maskDiv.width()-msgDiv.width());
varheightspace=(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);
})
returnmaskDiv;
},
unmask:function(){
varoriginal=$(document.body);
if(this[0]&&this[0]!==window.document){
original=$(this[0]);
}
original.find(">div.maskdivgen").fadeOut('slow',0,function(){
$(this).remove();
});
}
});
})();
</script>
</head>
<bodystyle="width:100%">
测试
<divid="test"style="width:200px;height:100px;border:black1pxsolid;">
</div>
<ahref="#"onclick="$('#test').mask('DIV层遮罩')">div遮罩</a>
<ahref="#"onclick="$('#test').unmask()">关闭div遮罩</a>
<ahref="#"onclick="$(document).mask('全屏遮罩').click(function(){$(document).unmask()})">全部遮罩</a>
</body>
</html>
以上就是jquery实现遮罩层的全部内容介绍,希望对大家的学习有所帮助。