css 单击元素后面的按钮

7xzttuei  于 2023-02-14  发布在  其他
关注(0)|答案(4)|浏览(159)

我有一个按钮在一个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>
qyuhtwio

qyuhtwio1#

您可以在.card上使用pointer-events:none;。这将禁用.card div上的click事件,用户可以单击它后面的按钮。More info here (MDN)
下面是一个示例,展示了如何在隐藏在另一个元素后面的元素上启用单击事件

button {
  margin: 50px;
}

button:focus {
  background: red;
}
button:hover {
  background: teal;
}

.inFront {
  pointer-events: none;
  position: absolute;
  top: 25px; left: 25px;
  right: 25px; height: 150px;
  border: 3px solid red;
  background: rgba(0, 0, 0, .5);
}
<button onclick="alert('button clicked');">I am a button behind the .inFront div</button>
<div class="inFront"></div>

在本例中,.inFront div位于按钮上方,但div上的pointer-events: none;属性允许单击、聚焦和悬停按钮。
对于你的例子,缺点是它也会禁用文本区和"卡片按钮",所以你必须修改HTML,并将文本区和卡片按钮移出.card div,这样它们仍然可以点击。

    • 第一个e第一个f第一个x
yqlxgs2m

yqlxgs2m2#

在本例中使用z-index

<button onclick="alert('bg-button clicked');" style="left:65px; top:65px; position: absolute; z-index:1;">This is a background button</button>

DEMO
这会将元素在深度域中的位置放在高于其他元素的位置。数字越大,堆栈顺序就越高。

z-index: 1;

但是,z轴需要定位,例如position: absolute;position: relative;
Read a great article about Z-Index here.

ipakzgxi

ipakzgxi3#

给予按钮一个正的z-index

button {
    position: absolute;
    z-index: 1;
}
m2xkgtsf

m2xkgtsf4#

对于那些谁有同样的问题,因为我在哪里(不重组您的HTML):

  1. div 1位于div 2的顶部
    1.第1部分和第2部分都需要可点击/交互
    1.但是,div 2应该在div 1之前
    将以下代码应用于div 2:
div2 {
  position: absolute; // to manipulate position
  z-index: 999; // manipulating the position, putting it in front of div1
  pointer-events: visible; // making it interactive, clickable
}

相关问题