我有一个像这样的简单模态框:
<div id="social" class="overlay">
<div class="inner">
<a class="close" href="#"><span class="icon-close"></span></a>
CONTENT
</div>
</div>
这是CSS:
.overlay {
position: fixed;
top: 0;
left: 0;
width: 100%;
z-index: 100;
background: fade(@black, 75%);
display: none;
z-index: 999;
}
#social .inner {
margin: 0 auto;
z-index: 1000;
width: 380px;
}
这是JS:
$(document).ready(function(){
$("#social").css("height", $(document).height());
$(".social").click(function(){
$("#social").fadeIn();
return false;
});
$(".close").click(function(){
$("#social").fadeOut();
return false;
});
});
当有人点击类close
的链接时,模式框会关闭。当有人点击模态框外的任何地方时,我希望也的模式框关闭,因此叠加图层(z-index:999
)上的任何位置。我不知道如何定位下层(z-index:999
)而不影响顶层(z-index:1000
)。
我对jQuery了解不多,所以如果你能以新手的方式表达你的建议,那就太好了。谢谢! :)
答案 0 :(得分:1)
通过在叠加层上附加单击事件处理程序,可以在单击叠加层时淡出模式框。 JSFiddle
HTML
<input type="button" class="social" value="test" />
<div id="social" class="overlay">
<div class="inner">
<a class="close" href="#">
<span class="icon-close">X</span>
</a>
CONTENT
</div>
</div>
CSS
.overlay {
position: fixed;
top: 0;
left: 0;
width: 100%;
z-index: 100;
background: rgba(0, 0, 0, 0.5);
display: none;
z-index: 999;
}
#social .inner {
margin: 0 auto;
z-index: 1000;
width: 380px;
}
的jQuery
$(document).ready(function () {
$("#social").css("height", $(document).height());
$(".social").click(function () {
$("#social").fadeIn();
return false;
});
$(".close").click(function () {
$("#social").fadeOut();
return false;
});
//This is the part that handles the overlay click
$("#social").on('click', function (e) {
if (e.target == this) {
$(this).fadeOut();
}
});
});