ホームページ >ウェブフロントエンド >jsチュートリアル >ネイティブ JS を使用してページ マスク効果を実現するサンプル コード_JavaScript スキル
Web アプリケーション開発者の場合、ユーザーがインターフェースを閲覧するときにバックグラウンド プログラムの処理時間が長い場合、Web ページ上でのユーザーの待ち時間は長くなりますが、ページ上にわかりやすいプロンプト メソッドがない場合は
(灰色の効果を追加) の場合、ユーザー エクスペリエンスは特に良くありません。ユーザーは、今すぐ別のプログラムをクリックすべきかどうかがわかりません。また、Web ページを待ち続ける必要があるかどうかもわかりません。別のページをクリックしてください。
これで、灰色の効果を追加する、比較的良好なインタラクションが得られました。 JS フレームワーク Extjs の Mask() 関数と unmask() 関数は、グレー化効果を提供します。もちろん、jquery もこのグレー化メソッドを提供します。ここの著者は、
もできることを望んでいます。ネイティブ JS を使用して、独自のグレー効果を実現します。それで私は自分で試してみました。グレー効果を実現しました。ここでは実装のみに重点を置いているので、ページの美しさについてはあまり調整していません。ここに実装コードを投稿します。
私のコード スニペットから派生した CODE のコード スニペットを表示
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <TITLE> New Document </TITLE> <META NAME="Generator" CONTENT="EditPlus"> <META NAME="Author" CONTENT=""> <META NAME="Keywords" CONTENT=""> <META NAME="Description" CONTENT=""> <style type="text/css"> .maskStyle { background-color:#B8B8B8; z-index:1; filter:alpha(opacity=50); opacity:0.8; position:absolute; text-align:center; color:blue; font:bold 1em "宋体",Arial,Times; height:25px; font-weight:bold; overflow:hidden; } </style> </HEAD> <script type="text/javascript"> function creatMaskLayer(effectItem,showText) { divItem = document.createElement("div"); divItem.className="maskStyle"; divItem.style.lineHeight=effectItem.offsetHeight+"px"; divItem.innerText=showText; divItem.style.width=effectItem.offsetWidth; divItem.style.height=effectItem.offsetHeight; divItem.style.top=effectItem.offsetTop; divItem.style.left=effectItem.offsetLeft; return divItem; } function setMask() { var effectItem = document.getElementById("test"); var existMaskItem = findMaskItem(effectItem); if(existMaskItem) { return; } var showText = "加载中..."; effectItem.appendChild(creatMaskLayer(effectItem,showText)); } function removeMask() { var effectItem = document.getElementById("test"); var maskItem = findMaskItem(effectItem); if(maskItem) { effectItem.removeChild(maskItem); } } function findMaskItem(item) { var children = item.children; for(var i=0;i<children.length;i++) { if("maskStyle"==(children[i].className)) { return children[i]; } } } </script> <BODY> <input type="button" value="蒙灰" onclick="setMask()"/> <input type="button" value="取消蒙灰" onclick="removeMask()"/> <br> <div id="test" style="border:1px solid;width:300px;height:300px"> 蒙灰我吧 <input type="button" value="测试是否还能点击" onclick="alert('OK!')"/> </div> </BODY> </HTML>
コードのより重要な部分を説明します。
.maskStyle はグレーレイヤーのスタイルです
どれ
CODE コード スニペットの派生
filter:alpha(opacity=50); opacity:0.8;
はグレーレイヤーの透明度を表し、フィルター属性は IE8 ブラウザー
との互換性を保つためのものです。z-index 属性は、要素の積み重ね順序を設定します。積み重ね順序が高い要素は常に、積み重ね順序が低い要素の前に表示されます。
PS: グレー効果を得るには、グレーにする要素を div に入れる必要があります