3

我在另一个 DIV 之上有一个 DIV。

我想要实现的是隐藏顶部的 DIV 以便能够访问下面的 DIV。

我试过不透明度,但由于顶部的 DIV 仍然存在,只是透明的,它不允许我与下面的 DIV 的内容进行交互。我也试过 display:none;, visibility: hidden; 和 z-index。这些都不行。

如何使用 CSS3 实现这一点,所以我也可以使用过渡?

HTML:

<li class="panel-box"> 
    <div class="front box-style"> </div>
    <div class="back"> </div> 
</div> </li>

CSS:

.panel-box {
    margin: 5px;
    padding: 0;
    display: inline-block;
    clear: none;
    float: left;
    width: 310px;
    height: 200px;
    position: relative;
}

.box-style {
    background-color: red;
}

.front {
    width: 310px;
    height: 200px;
    z-index: 5;
    opacity: 0;
    display: block;
    position: absolute;
    top: 0;
    left: 0;
}

.front:hover {
    opacity: 0;
    display: none;  
}

.back {
    width: 310px;
    height: 200px;
    background-color: rgba(57, 54, 55, 0.95);
    position: absolute;
    top: 0;
    left: 0;
    z-index: 0;
}

谢谢一堆。

4

1 回答 1

1

我已经整理了一些似乎可以做到这一点的解决方法,但它可能会在 IE 上惨遭失败。

经过测试并在 Chrome 上合理运行...... YMMV :)

它使用z-index和兄弟选择器的组合来允许前/后 div 在堆叠上下文中交换位置。

我不得不用前/后交换位置来使用 CSS 兄弟选择器。我不认为这是一个完美的例子,但也许它会让想法流动起来。

基本上这里发生的是:

  • 随着鼠标进入 - 触发.front:hover
  • 前 z-index 变为 -1 触发.back:hover
  • 返回 z-index 立即变为 100 保持它在堆栈的顶部
  • 兄弟选择器 back:hover + front 保持前面不透明度为 0
  • 当鼠标移出时,这一切都反转了

反向过渡不是很顺利 - 还没有完全弄清楚是否可以修复。

演示

CSS

.panel-box {
    margin: 5px;
    padding: 0;
    display: inline-block;
    clear: none;
    float: left;
    width: 310px;
    height: 200px;
    position: relative;
}

.front {
    width: 310px;
    height: 200px;
    padding: 10px;
    z-index: 5;
    opacity: 1;
    display: block;
    position: absolute;
    background-color: red;
    top: 0;
    left: 0;
    -webkit-transition: opacity .5s ease;
}

.front:hover {
    opacity: 0;
    z-index: -1;
}

.back {
    width: 310px;
    height: 200px;
    padding: 10px;
    color: white;
    background-color: rgba(57, 54, 55, 0.95);
    position: absolute;
    top: 0;
    left: 0;
    z-index: 0;
    opacity: 0;
    -webkit-transition: opacity .5s ease;
}

.back:hover + .front {
    opacity: 0;
}

.back:hover {
    z-index: 100;
    opacity: 1;
}

HTML

<li class="panel-box">
    <div class="back">content goes here</div>
    <div class="front box-style"></div>
</li>
于 2013-08-20T05:32:04.937 回答