Web ページ全体をカバーする (半透明の) オーバーレイを作成しようとしています。これに似ています: http://www.jankoatwarpspeed.com/use-jquery-to-turn-off-the-lights-while-watching-videos
<div id="overlaySplash" onclick="clickHandler(this)">
<div id="insideBox">
[ label elements here with onclick="dosomething()" ]
</div>
</div>
CSS
#overlaySplash {
position: absolute;
top: 0;
left: 0;
bottom:0;
right:0;
background: rgb(50, 50, 50);
background: rgba(0, 0, 0, .50);
z-index: 50;
}
#insidebox {
position: absolute;
z-index: 100;
left: 15%;
right: 15%;
bottom: 5%;
line-height: 50px;
text-align: left;
}
問題は、jquery を使用していないことと、オーバーレイ div の int にいくつかのクリケーブルなコンテンツがあることです。以下にこの関数がありますが、メインのオーバーレイ div内の要素をクリックすると、JS はクリックされた要素ではなく、オーバーレイ div 自体として e.id を返します。この方法では、ユーザーが実際にどこをクリックしたかわかりません。
function clickHandler(e){ //hide the div overlaySplash
e = e || event;
alert(e.id);
}
結論:
ユーザーは div 内のラベルをクリックしました: dosomething();
ユーザーが背景 (DIV 自体) をクリックした: closeOverlaySplash();