ホームページ > 記事 > ウェブフロントエンド > jqueryは単純なマスクlayer_javascriptスキルを実装します
この記事では、マスク レイヤーの実装のさまざまなスタイル、マスク レイヤーのマスク実装などを含む、jquery マスク レイヤーについて例を示して説明します。具体的な内容は次のとおりです。
1. 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 プロンプトボックス
マスクの目的は、コンテンツの操作を不可能にし、プロンプト ボックスを強調表示することです。プロンプト ボックスは、上記を参照してマスク レイヤーよりも高くすることができます。主な問題は、プロンプト ボックスをブラウザの中央に配置するように制御する方法です。
/* 定位到页面中心 */ 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; }
2. 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; は Firefox と 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. 次のコードを に追加すると、効果が確認できます
HTML コード
<div id="mask" class="mask"></div> <a href="javascript:;" onclick="showMask()" >点我显示遮罩层</a><br />
4.
の使い方
ajax がフォームを送信した後、showMask メソッドを追加し、データが返された後、hideMask() を追加します
必要な場合は、必要に応じてマスク レイヤーにプロンプト情報を追加できます
3. JQuery マスク層実装 (マスク) を公開します
ExtJ を使用したことがある方は、多くの UI 要素が ExtJ に統合されており、非常に使いやすいことをご存知かと思います。顧客エクスペリエンスを向上させるために、マスク レイヤーとプロンプト メッセージを指定された要素に追加する、mask() と unmask() の 2 つのメソッドがあります。最近プロジェクトに取り組んでいたとき、これら 2 つのメソッドを使用するには、比較的「大きな」Extjs を導入する必要があることがわかり、少し不経済だと感じたので、jquery を使用して比較的単純なマスクを実装しました。この効果を実現するための 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 でのマスク層の実装の完全な紹介です。皆さんの学習に役立つことを願っています。