我正在尝试突出显示页面其余部分的div / grey。我的代码是:
jQuery(document).ready(function ($) {
$('.entry-content').mouseover(function(e) {
$('.expose').mouseover(function(e){
$(this).css('z-index','99999');
$('#overlay').fadeIn(300);
});
});
$('.entry-content').mouseleave(function(e) {
$('.expose').mouseleave(function(e){
$('#overlay').fadeOut(0, function(){
$('.expose').css('z-index','1');
});});});});
HTML看起来像
<div id="overlay">
<div class="entry-content">
<div class="expose">something</div>
<div class="expose">something</div>
<div class="expose">something</div>
</div>
#overlay {
background:rgba(0,0,0,0.3);
display:none;
width:100%; height:100%;
position:absolute; top:0; left:0; z-index:99998;
}
我所追求的只要用户将鼠标悬停在入口内容div上,让页面显示为灰色并突出显示他正在盘旋的div。
有什么想法吗? 感谢
答案 0 :(得分:6)
z-index
相对于堆叠上下文,而不是相对于文档。如果您希望expose
元素显示在叠加层上,则它们必须是兄弟姐妹,或者您必须使用.expose
明确定位position:*
。
通常,元素必须是相同堆叠上下文的一部分才能比较它们的z-index值。您可以详细了解堆叠上下文here。
其他一些要点:
pointer-events:none;
.expose
。将处理程序与处理程序并行绑定以显示/隐藏覆盖这是更正后的代码。您可以看到工作演示here:
<强> CSS:强>
#overlay {
background:rgba(0,0,0,0.3);
display:none;
width:100%;
height:100%;
position:absolute;
top:0;
left:0;
z-index:99998;
pointer-events:none
}
.expose{
background-color:red;
position:relative;
}
<强> JS:强>
$('.entry-content').hover(function() {
$('#overlay').fadeIn(300);
}, function() {
$('#overlay').fadeOut(300);
});
$('.expose').hover(function(e) {
$(this).css('z-index', '99999');
},function(e) {
$(this).css('z-index', '1');
});
答案 1 :(得分:1)
您可以在没有叠加并使用CSS3的情况下模拟此行为
<div class="wrapper">
<div class="entry-content">
<div class="expose">something</div>
<div class="expose">something</div>
<div class="expose">something</div>
</div>
</div>
html, body, .wrapper {
padding:0;
margin:0;
height:100%;
width:100%;
}
.wrapper {
-webkit-transition:all 300ms;
-moz-transition:all 300ms;
-ms-transition:all 300ms;
-o-transition:all 300ms;
transition:all 300ms;
}
.wrapper:hover {
background:rgba(0,0,0,.3);
}
.wrapper:hover .expose {
background:#ddd;
}
.entry-content {
padding:6px;
}
.expose {
margin-bottom:6px;
padding:12px;
border-radius:3px;
background:#eee;
}
.expose:hover {
background:#fff!important;
}