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实现遮罩层的全部内容介绍,希望对大家的学习有所帮助。