Fadein / out图像翻转,没有触发它的真实文本

时间:2015-10-13 15:17:00

标签: javascript css z-index

我正在尝试创建一个导航菜单,其中包含图像淡入/淡出背景onmouseover翻转,但在其上面有真实文本。

我现在遇到的麻烦是文本有一个更高的z-index,当鼠标实际上仍在按钮内时,它会禁用并重新激活翻转。

https://jsfiddle.net/technov1king/1an1joxq/6/

HTML:

<div id="cf">
    <img class="bottom" src="http://dummyimage.com/300.png/09f/fff" />
    <img class="top" src="http://sciencenordic.com/sites/default/files/imagecache/300x/hopp_None_0.jpg" />
    <div id="tekst">MOVE MOUSE OVER TEXT<br>SLOW LEFT TO RIGHT</div>
</div>

CSS:

#cf {
  position:relative;
  height:281px;
  width:450px;
  margin:0 auto;
}

#cf img {
  position:absolute;
  left:0;
  -webkit-transition: opacity 1s ease-in-out;
  -moz-transition: opacity 1s ease-in-out;
  -o-transition: opacity 1s ease-in-out;
  transition: opacity 1s ease-in-out;
}

#cf img.top:hover {
  opacity:0;
}

#tekst {
    position: absolute;
    left: 35px;
    top: 111px;
    font-weight: bold;
    font-size: 18px;
    z-index: 99;
 } 

请自己尝试一下。我希望图像上的文字什么都不做。 因此,您可以从左向右移动鼠标,而不是重新触发翻转,而是移动文本。

2 个答案:

答案 0 :(得分:2)

您需要在图像和文本的父容器上指定悬停效果。这样,当文本悬停时,父悬停就会触发。

#cf img.top {
  opacity: 1
}

#cf:hover img.top {
  opacity: 0
}

答案 1 :(得分:0)

这是一个不需要整个容器悬停的解决方案,但需要一些标记移动才能使用adjacent sibling selector+选择器):

#cf {
    position:relative;
    height:281px;
    width:450px;
    margin:0 auto;
}
#cf img {
    position:absolute;
    left:0;
    transition: opacity 1s ease-in-out;
}
#cf #tekst:hover + img.top, #cf img.top:hover {
    opacity:0;
}
#tekst {
    margin: 0 auto;
    font-weight: bold;
    font-size: 18px;
    position: absolute;
    left: 30px;
    top: 130px;
    z-index: 3;
}
<div id="cf">
    <img class="bottom" src="http://dummyimage.com/300.png/09f/fff" />
    <div id="tekst">MOVE MOUSE OVER TEXT
    <br>SLOW LEFT TO RIGHT</div>
    <img class="top" src="http://sciencenordic.com/sites/default/files/imagecache/300x/hopp_None_0.jpg" />
</div>