Z-index 防止项目被点击
Z-index prevents item to get clicked
我有一个带有插入阴影的容器 div,我在这个容器中也有子元素,我只希望这些子元素可以点击。
将子元素(我项目中的图像,不确定是否重要)元素的 z-index 设置为 -1 对于投影显示至关重要。但是这样做容器会覆盖子元素,所以点击不起作用。
设置指针事件:none;在容器元素上也没有帮助(我也希望容器可以滚动)。
$('.item').on('click', function() {
alert($(this).attr('id'));
});
.container {
position: absolute;
width: 250px;
height: 250px;
border-radius: 50%;
box-shadow: inset 0 0 10px black;
overflow-y: scroll;
overflow-x: hidden;
}
.item {
width: 250px;
height: 80px;
margin: 3px 0;
background-color: #cacaca;
position: relative;
text-align: center;
z-index: -1;
/*Shadow visible, JS doesn't work*/
/*z-index: 0;*/
/*Clickable, but shadow is covered */
}
<div class="container">
<div class="item" id="item1">
<p>CLICK</p>
</div>
<div class="item" id="item2">
<p>CLICK</p>
</div>
<div class="item" id="item3">
<p>CLICK</p>
</div>
<div class="item" id="item1">
<p>CLICK</p>
</div>
</div>
如何保留阴影,并使子元素可点击?
为什么会这样
发生这种情况的原因是因为带有 class .item
的 div 在 .container
后面,这意味着用户实际上是在单击 .container
,不是 .item
.
解决方案
您可以像这样用包装器包装您的 div:
<div class="container">
<div class="item" id="item1">
<div><p>CLICK</p></div>
</div>
<div class="item" id="item2">
<div><p>CLICK</p></div>
</div>
<div class="item" id="item2">
<div><p>CLICK</p></div>
</div>
<div class="item" id="item3">
<div><p>CLICK</p></div>
</div>
</div>
并将您的 CSS 从 .item
更新为 .item > div
[但保留 JS 原样]
这样,外面的 .item
仍然在 .container
前面,里面的 div 在 .container
后面,这意味着它仍然可以点击,你得到您想要的造型!
证明有效!
检查以下 JS Fiddle:https://jsfiddle.net/anik786/5oe841sw/6/
截图如下:
我有一个带有插入阴影的容器 div,我在这个容器中也有子元素,我只希望这些子元素可以点击。
将子元素(我项目中的图像,不确定是否重要)元素的 z-index 设置为 -1 对于投影显示至关重要。但是这样做容器会覆盖子元素,所以点击不起作用。
设置指针事件:none;在容器元素上也没有帮助(我也希望容器可以滚动)。
$('.item').on('click', function() {
alert($(this).attr('id'));
});
.container {
position: absolute;
width: 250px;
height: 250px;
border-radius: 50%;
box-shadow: inset 0 0 10px black;
overflow-y: scroll;
overflow-x: hidden;
}
.item {
width: 250px;
height: 80px;
margin: 3px 0;
background-color: #cacaca;
position: relative;
text-align: center;
z-index: -1;
/*Shadow visible, JS doesn't work*/
/*z-index: 0;*/
/*Clickable, but shadow is covered */
}
<div class="container">
<div class="item" id="item1">
<p>CLICK</p>
</div>
<div class="item" id="item2">
<p>CLICK</p>
</div>
<div class="item" id="item3">
<p>CLICK</p>
</div>
<div class="item" id="item1">
<p>CLICK</p>
</div>
</div>
如何保留阴影,并使子元素可点击?
为什么会这样
发生这种情况的原因是因为带有 class .item
的 div 在 .container
后面,这意味着用户实际上是在单击 .container
,不是 .item
.
解决方案
您可以像这样用包装器包装您的 div:
<div class="container">
<div class="item" id="item1">
<div><p>CLICK</p></div>
</div>
<div class="item" id="item2">
<div><p>CLICK</p></div>
</div>
<div class="item" id="item2">
<div><p>CLICK</p></div>
</div>
<div class="item" id="item3">
<div><p>CLICK</p></div>
</div>
</div>
并将您的 CSS 从 .item
更新为 .item > div
[但保留 JS 原样]
这样,外面的 .item
仍然在 .container
前面,里面的 div 在 .container
后面,这意味着它仍然可以点击,你得到您想要的造型!
证明有效!
检查以下 JS Fiddle:https://jsfiddle.net/anik786/5oe841sw/6/
截图如下: