css 两个div堆叠在另一个上面,但两者都必须是可点击的,可悬停的和/或可滚动的?

46qrfjad  于 2023-05-08  发布在  其他
关注(0)|答案(1)|浏览(116)

我有一个类似于下面的代码,其中两个具有相同宽度和高度的绝对定位的div被放置在父div(.container)中。我希望他们都是可点击的,可悬停和/或可滚动的,但事实上,只有顶部的一个是。我尝试了pointer-events:none,但它使div不可点击。我也尝试了isolation: isolate,但我可能是实现错误,因为我不能让它工作。任何帮助是非常感谢!

.container {
  position: relative;
}
.scrollable {
  border: 1px solid blue;
  height: 100px;
  width: 200px;
  overflow-y: scroll;
  z-index: 1;
  position: absolute;
}

.hoverable {
  color: red;
  height: 100px;
  width: 200px;
  border: 1px solid red;
  z-index: 2;
  position: absolute;
}

.hoverable:hover {
  background-color: rgba(0,0,0,0.3);
}
<div class="container">
  <div class="scrollable">
    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec eget augue elit. Nullam eget augue vel odio feugiat malesuada. Suspendisse ultrices, lacus nec finibus varius, ipsum tortor mattis urna, ut tincidunt nibh ex eu ipsum. Ut et neque vitae urna euismod placerat vel in enim.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec eget augue elit. Nullam eget augue vel odio feugiat malesuada. Suspendisse ultrices, lacus nec finibus varius, ipsum tortor mattis urna, ut tincidunt nibh ex eu ipsum. Ut et neque vitae urna euismod placerat vel in enim.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec eget augue elit. Nullam eget augue vel odio feugiat malesuada. Suspendisse ultrices, lacus nec finibus varius, ipsum tortor mattis urna, ut tincidunt nibh ex eu ipsum. Ut et neque vitae urna euismod placerat vel in enim.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec eget augue elit. Nullam eget augue vel odio feugiat malesuada. Suspendisse ultrices, lacus nec finibus varius, ipsum tortor mattis urna, ut tincidunt nibh ex eu ipsum. Ut et neque vitae urna euismod placerat vel in enim.</p>
  </div>

  <div class="hoverable">
    <h2>Hover me!</h2>
  </div>
</div>
ewm0tg9j

ewm0tg9j1#

我真的看不出有两个直接在对方之上的div的目的。也许您可以尝试将scrollablehover结合使用。我肯定会避免两个div直接在对方的顶部。也许pseudo-elements也可以帮助你实现你试图用两个堆叠的div来做的事情。
然而,关于你的问题:我认为这是有可能的,但相当黑客,我不会真的推荐它。正如您在示例中所看到的,它通过使用pointer-events来工作,但它既不可访问,也不是一个真正的好解决方案。

.container {
  position: relative;
}
.scrollable {
  border: 1px solid blue;
  height: 100px;
  width: 200px;
  overflow-y: scroll;
  z-index: 1;
  position: absolute;
  pointer-events: all;
}

.hoverable {
  color: red;
  height: 100px;
  width: 200px;
  border: 1px solid red;
  z-index: 2;
  position: absolute;
  pointer-events: all;  
}

.hoverable:hover {
  pointer-events: none;
  background-color: rgba(0,0,0,0.3);
}
<div class="container">
  <div class="scrollable">
    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec eget augue elit. Nullam eget augue vel odio feugiat malesuada. Suspendisse ultrices, lacus nec finibus varius, ipsum tortor mattis urna, ut tincidunt nibh ex eu ipsum. Ut et neque vitae urna euismod placerat vel in enim.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec eget augue elit. Nullam eget augue vel odio feugiat malesuada. Suspendisse ultrices, lacus nec finibus varius, ipsum tortor mattis urna, ut tincidunt nibh ex eu ipsum. Ut et neque vitae urna euismod placerat vel in enim.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec eget augue elit. Nullam eget augue vel odio feugiat malesuada. Suspendisse ultrices, lacus nec finibus varius, ipsum tortor mattis urna, ut tincidunt nibh ex eu ipsum. Ut et neque vitae urna euismod placerat vel in enim.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec eget augue elit. Nullam eget augue vel odio feugiat malesuada. Suspendisse ultrices, lacus nec finibus varius, ipsum tortor mattis urna, ut tincidunt nibh ex eu ipsum. Ut et neque vitae urna euismod placerat vel in enim.</p>
  </div>

  <div class="hoverable">
    <h2>Hover me!</h2>
  </div>
</div>

相关问题