使用CSS在悬停时叠加透明图像

时间:2011-04-13 10:19:18

标签: css layout cross-browser

我正在尝试使用CSS在悬停时叠加透明图像。

有一个答案here但它在IE7或IE8中不起作用。有谁知道怎么做?

我试图保持超轻,所以不要真的想使用js或类似的东西。

由于

3 个答案:

答案 0 :(得分:12)

我检查了您的链接,并基于此提出了this solution

HTML:

<div class="image">
    <img src="xy.jpg" alt="" />
    <img class="hoverimage" src="xy_hover.jpg" alt="" />
</div>

CSS:

.image { position: relative; width: 184px; height: 219px; }
.hoverimage { position: absolute; top: 0; left: 0; display: none; }
.image:hover .hoverimage { display: block; }

应该适用于所有浏览器,包括IE8和IE7。它在IE6中不起作用,因为它只允许:将鼠标悬停在链接(<a>)等特定元素上。如果您想支持IE6,请将.image更改为<a>而不是<div>,并将其display: block;

答案 1 :(得分:1)

这仍不适用于IE7 / 8 AFAIK,所以我担心这不会回答这个问题。

然而,当我忘记如何使用现代方法进行这项工作时,我已经在这个页面上结束了,所以我把答案放在这里供参考。

我只能通过将img放在容器/包装器div中来实现这一点,因为img元素不会接受像:after这样的伪类。

<div class="container"><img src="http://placekitten.com/240/320" alt="icanhaz"></div>

然后CSS被设置为在悬停时提供伪元素。

.container {
    position: relative;
}
.container:hover:after {
    content: '';
    position: absolute;
    left: 0;
    top: 0;
    right: 0;
    bottom: 0;

    background: rgba(0,0,0,0.5); /* Here you may also use images, gradients, etc */
}

请参阅示例here

答案 2 :(得分:-1)

通常我们重新创建应该具有.png格式的透明叠加层的图像。 .Jpeg是一种不支持透明度的平面图像格式。

我们采取的下一步是做这样的事情:

<div style="Background-Image:Url(BackgroundImage.Jpg);Width:500px;Height:500px" >
   <div style="Background-Image:Url(OverlayImage.Png);Width:50%;Height:50%" >
     ...
   </div>
</div>

这是我能理解你的问题的最接近的方式