从技术上讲,您的代码可能有效,但是当您将鼠标悬停在背景图像上时,即使背景图像存在,它也不会显示,因为背景无法显示在其前景之上。您不能只在背景图像上设置 z-index,因为它不是一个单独的元素。
有很多方法可以做到这一点。您可以在 div 上设置背景图片,然后将其他图片设置为仅在您将鼠标悬停在其上时显示。
例如:
HTML:
<div id= "silhouette_3">
<img src= "http://lorempixel.com/400/200/sports" />
</div>
CSS:
#silhouette_3
{
float: right;
margin: 8px 20px 0px 0px;
padding: 0px 0px 0px 0px;
background-image: url("http://lorempixel.com/400/200/abstract");
background-repeat: no-repeat;
}
#silhouette_3 img {
visibility: hidden;
}
#silhouette_3:hover img {
visibility: visible;
}
这样,CSS 中的背景图像是最初显示的图像,而 img 标记中的图像是当您将鼠标悬停在它上面时显示的图像。
我在 CodePen 创建了一个演示:http://codepen.io/Ghodmode/pen/foIhJ
更新:在我看来,图像更像是内容而不是演示,所以我宁愿将它们放在 HTML 中而不是 CSS 中。我更新了我的 CodePen 演示,让它有点不同。我更喜欢这种方式...
HTML:
<div id="silhouette_4">
<img class="img1" src="http://lorempixel.com/400/200/city">
<img class="img2" src="http://lorempixel.com/400/200/people">
</div>
CSS:
#silhouette_4 img {
float: right;
margin: 8px 20px 0px 0px;
padding: 0px 0px 0px 0px;
}
#silhouette_4 .img2 {
display: none;
}
#silhouette_4:hover .img1 {
display: none;
}
#silhouette_4:hover .img2 {
display: inline-block;
}