本文實例講解了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.2 jQuery實現遮罩
/* 顯示遮罩層 */function showOverlay() { $("#overlay").height(pageHeight()); $("#overlay").width(pageWidth()); // fadeTo第一個參數為速度,第二個為透明度 // 多重方式控制透明度,保證兼容性,但也帶來修改麻煩的問題 $("#overlay").fadeTo(200, 0.5);}/* 隱藏覆蓋層 */function hideOverlay() { $("#overlay").fadeOut(200);}/* 當前頁面高度 */function pageHeight() { return document.body.scrollHeight;}/* 當前頁面寬度 */function pageWidth() { return document.body.scrollWidth;}1.3 提示框
遮罩的目的無非讓人無法操作內容,突出提示框,而提示框可參考上面的制作,z-index比遮罩層更高便可。主要問題是,如何控制提示框在瀏覽器居中。
/* 定位到頁面中心 */function adjust(id) { var w = $(id).width(); var h = $(id).height(); var t = scrollY() + (windowHeight()/2) - (h/2); if(t < 0) t = 0; var l = scrollX() + (windowWidth()/2) - (w/2); if(l < 0) l = 0; $(id).css({left: l+'px', top: t+'px'});}//瀏覽器視口的高度function windowHeight() { var de = document.documentElement; return self.innerHeight || (de && de.clientHeight) || document.body.clientHeight;}//瀏覽器視口的寬度function windowWidth() { var de = document.documentElement; return self.innerWidth || (de && de.clientWidth) || document.body.clientWidth}/* 瀏覽器垂直滾動位置 */function scrollY() { var de = document.documentElement; return self.pageYOffset || (de && de.scrollTop) || document.body.scrollTop;}/* 瀏覽器水平滾動位置 */function scrollX() { var de = document.documentElement; return self.pageXOffset || (de && de.scrollLeft) || document.body.scrollLeft;}二、Jquery超簡單遮罩層實現代碼
在開發中,為了避免二次提交,遮罩層的運用越來越普遍
看了很多代碼,下面跟大家分享一下我認為最簡單的遮罩層實現方式:
1.樣式如下設置:
CSS代碼:
<style type="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代碼
<pre class="html" name="code"><script type="text/javascript"> //兼容火狐、IE8 //顯示遮罩層 function showMask(){ $("#mask").css("height",$(document).height()); $("#mask").css("width",$(document).width()); $("#mask").show(); } //隱藏遮罩層 function hideMask(){ $("#mask").hide(); } </script> 3.在<body>中加入如下代碼,然后就可以看到效果
html代碼
<div id="mask" class="mask"></div> <a href="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(); // 參數 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="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>以上就是jquery實現遮罩層的全部內容介紹,希望對大家的學習有所幫助。
新聞熱點
疑難解答