2

我正在尝试在半透明的 div 元素上使用背景图像,将鼠标悬停在任一元素上都会改变背景颜色。但是,当我将鼠标移到任一元素上时,我会遇到闪烁效果。

<div class="container">
  <div class="test"></div>
  <div class="first box"></div>
  <div class="third box">third</div>
  <div class="second box">second</div>
  <div class="fourth box">fourth</div>
  <div class="last box">last</div>
</div>

CSS:

html, body, 
.container {
    height: 100%; 
    min-height: 100%;
}

.box {
    width: 191px;
    height: 145px;
    margin: 4px;
    float: left;
    background-color: black;
}

.box:hover{
    background-color:#EF6939;
    opacity: 1;
    overflow: hidden;
}

.test:hover{
    background-color:#EF6939;
    overflow: hidden;
}

.test {
    width: 191px;
    height: 145px;
    margin: 4px;
    float: left;
    position: absolute;
    /*  background-image: url(test.png);*/
}

.first {
    /* float: left; */
    /* background-color: red; */
    opacity: 0.1;
}

.second{
    /*     float: left;*/    
    /* background-color: green; */
}

.third{
    /* float: right; */
    /*  background-color: blue; */
}

.fourth {
    /* float: right; */
    /*  background-color: #DDDDDD; */
}

.last{
    /* float: right; */
    /*  background-color: yellow; */
}

这是我的代码的链接:http: //jsfiddle.net/YTDyL/

4

3 回答 3

5

服务于什么目的div.test

问题是它是重叠的div.first,因为它是绝对定位的。根据您想要的效果,您可能需要div.test向内移动div.first(反之亦然)。position: absolute;如果容器将容纳一个元素,则无论哪个容器都需要定位(相对或绝对或其他) 。

两个元素都在竞争:hover,因为它们重叠。因此闪烁(当鼠标移动时,一个获得而另一个失去:hover,并再次返回)。

jsfiddle.net/YTDyL/1

于 2013-07-10T17:29:00.943 回答
3

当您将指针移到元素上时它会闪烁,因为它们具有相同的 z-index,因此两种悬停效果都会触发。如果将z-index属性添加到两个元素,使一个元素的索引高于另一个元素,则不会发生闪烁。

这是一个小提琴供您查看:

http://jsfiddle.net/YTDyL/3/

于 2013-07-10T17:31:44.587 回答
2

将 z-index 添加到.test

.test{z-index:99;}

演示

于 2013-07-10T17:44:22.543 回答