我有一个按钮在一个div中,它在另一个div后面。第二个div通过使用css与第一个div重叠:position: absolute;
因此这个按钮是不可点击的。有没有什么方法可以让它像普通按钮一样可点击?
示例:jsfiddle
body {
background-color: blue;
}
.stack {
width: 320px;
height: 240px;
position: absolute;
top: 50%;
left: 50%;
background-color: white;
margin-top: -120px;
margin-left: -160px;
}
.background {
width: 320px;
height: 240px;
background-image: url('http://www.userlogos.org/files/logos/ps1d3r/apple-black-i.png');
top: 0px;
left: 0px;
position: absolute;
}
.card {
pointer-events: none;
width: 320px;
height: 240px;
background-image: url('http://2.bp.blogspot.com/-OIHQM4x8l0U/UEiDLQyiTRI/AAAAAAAAHFs/i1a6rkqQ8tQ/s320/floral+swirl.png');
top: 0px;
left: 0px;
position: absolute;
}
<div class="stack">
<div class="background" onclick="alert('background clicked');">
<button onclick="alert('bg-button clicked');" style="left:65px; top:65px; position: absolute;">This is a background button</button>
<div class="card">
<button onclick="alert('card-button clicked');">This is a card button</button>
<textarea style="left:100px; top:100px; position: absolute;">This is a card textarea</textarea>
</div>
</div>
</div>
4条答案
按热度按时间qyuhtwio1#
您可以在
.card
上使用pointer-events:none;
。这将禁用.card
div上的click事件,用户可以单击它后面的按钮。More info here (MDN)。下面是一个示例,展示了如何在隐藏在另一个元素后面的元素上启用单击事件:
在本例中,
.inFront
div位于按钮上方,但div上的pointer-events: none;
属性允许单击、聚焦和悬停按钮。对于你的例子,缺点是它也会禁用文本区和"卡片按钮",所以你必须修改HTML,并将文本区和卡片按钮移出
.card
div,这样它们仍然可以点击。yqlxgs2m2#
在本例中使用
z-index
。DEMO
这会将元素在深度域中的位置放在高于其他元素的位置。数字越大,堆栈顺序就越高。
但是,z轴需要定位,例如
position: absolute;
或position: relative;
。Read a great article about Z-Index here.
ipakzgxi3#
给予按钮一个正的
z-index
m2xkgtsf4#
对于那些谁有同样的问题,因为我在哪里(不重组您的HTML):
1.第1部分和第2部分都需要可点击/交互
1.但是,div 2应该在div 1之前
将以下代码应用于div 2: