在这个例子中,我有两个重叠的网格。但是,即使存在空单元格,mouseevent也仅触发最上面的网格元素。因此,例如,如果我将光标放在红色方块上,则不会发生鼠标事件,但是对于蓝色方块,它会触发。
有关如何解决此问题的任何想法或解决方法。谢谢!
$(".elem1").mouseenter(function() {
console.log("elem1");
})
$(".elem2").mouseenter(function() {
console.log("elem2");
})
.container1 {
position:fixed;
display: grid;
width: 100%;
grid-template-columns: 20px 100px 1fr;
grid-template-rows: 100px;
grid-template-areas: ". elem1 .";
}
.container2 {
position:fixed;
display: grid;
width: 100%;
grid-template-columns: 50px 100px 1fr;
grid-template-rows:100px;
grid-template-areas: ". elem2 .";
}
.elem1 {
background-color: red;
grid-area: elem1;
}
.elem2 {
background-color: blue;
grid-area: elem2;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container1"><div class="elem1"></div></div>
<div class="container2"><div class="elem2"></div></div>
答案 0 :(得分:1)
即使顶部网格的某些部分在视觉上是空的,它们仍会接收鼠标事件并妨碍它背后的事物。
你可以这样做:
.container2 { pointer-events: none }
.elem2 { pointer-events: visible }
使.container2
的空白部分无法点击,而.elem2
仍然可点击。这不会在IE中发挥作用。
答案 1 :(得分:0)
我不知道你想要达到什么目标,但正如你所认识的那样 - 一个div与另一个div重叠,所以没有可能发生事件,而是建议你将两个div放在一个网格并使用负边距重叠。
https://jsfiddle.net/awv8evs3/4/
<div class="container"><div class="elem1"></div><div class="elem2"></div></div>
.container {
position:fixed;
display: grid;
width: 100%;
grid-template-columns: 80px 80px 1fr;
grid-template-rows: 100px;
}
.elem1 {
background-color: red;
}
.elem2 {
margin-left:-60px;
background-color: blue;
}