【问题标题】:Click just one button through an overlaying div在覆盖的 div 中单击一个按钮
【发布时间】:2012-04-11 17:21:22
【问题描述】:

我有一些正常的内容。然后我制作了另一个 div,它将覆盖所有内容,由一个按钮触发。

这个div是绝对位置,背景色:rgba,所以可以透明。

当显示 div 时,用户不能点击它下面的任何东西,只能点击一个按钮(刚才提到的那个)。

我无法做到这一点,如果我使用指针事件,它可以让点击访问它下的所有内容。

我只希望底部 div 中的按钮在 div 打开时可以点击。

非常感谢!

【问题讨论】:

  • 'preventDefault();'是您的朋友,但如果您的内容被正确覆盖,则不应发生这种情况。你有我们可以看看的例子吗?

标签: css html styles css-position


【解决方案1】:

如果您只希望一个按钮在叠加层处于活动状态时可点击,为什么不让该按钮成为叠加层上方的唯一按钮?

然后您可以使用 jquery 来修改给定对象的 css。如果覆盖是活动的 z-index 按钮到顶部。如果它处于非活动状态,则将按钮返回到其正常状态并隐藏覆盖。如果您真的希望按钮看起来像在叠加层下,您甚至可以设置一种样式以使其看起来褪色(通过 CSS 不透明度或替代图像)

http://jsfiddle.net/ckaufman/b6gza/

【讨论】:

  • 它没有 z-index,只有透明度。 '.yourDiv{ 位置:绝对;顶部:1px;背景剪辑:填充框;高度:200px;背景色:rgba(255, 246, 142, 0.6);边框:实心;边框半径:10px;边框颜色:棕色; display:none }' 我想我可以做到,重复顶部 div 上的按钮,并为其设置相同的不透明度 :) 谢谢。问题将被设置在另一个问题之上。或者我怎样才能把它带到顶部?
  • 在您的覆盖 div 上它已经定位:absolute 因此您可以对其应用 z-index,比如说 100。设置您的按钮位置:relative 并给它一个 z-index 比如说 150将其设置在叠加层之上。
  • 最简单的形式是将z-index设置为按钮,因此即使div出现,它也会保持在上方,谢谢=)
  • 太棒了,很高兴它成功了。请记住将此问题标记为已回答/已关闭,除非我们可以为您提供任何其他帮助
  • 是的,它现在可以工作了,我没有给它不透明度,就像当他们显示带有 z-index 的(帮助)div 时跳跃一样,他们可以重新单击它来关闭它。看起来很棒。非常感谢!
【解决方案2】:

首先,您为什么要在所有内容上覆盖“透明 div”?

其次,您可以通过检查每个点击事件的透明 div 的可见性来解决您的问题。

function anyclick()
if(transparent div is visible)
   do nothing
else
   do something

从技术上讲,尽管不会触发任何事件,但仍然可以使按钮可点击。

编辑编辑:你是否在索引你的“透明 div”?这也可能导致问题。

【讨论】:

  • 它是对用户的帮助,div 出现并且有一些工具提示可以解释下面的内容发生了什么。它有太多的事件点击,现在你提到 zindex,我想我可以将它设置为按钮,所以它也出现了。我没有在我的 div 上使用 zindex。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-25
相关资源
最近更新 更多