在CSS中具有透明背景RGBA背景的后备

时间:2013-09-16 15:41:51

标签: css rgba

我在悬停上使用的图像上有一个div,它有一些乳白色的图层,我可以使用background-color:rgba(255,255,255,0.1)

当我跨浏览器测试我的网站时,我意识到IE8不支持rgba。因此,当不支持rgba时,我想要的是根本没有乳白色层。在下面我尝试作为后备:

1/ background-color:rgba(255,255,255,0.1);

2/ background-color:transparent; background-color:rgba(255,255,255,0.1);

3/ background-color:none; background-color:rgba(255,255,255,0.1);

通过所有三次尝试,我的图像上都有一个完整的空白图层。我怎么能做到这一点?

2 个答案:

答案 0 :(得分:2)

我认为以下内容可行。

将图像包装在容器中:

<div class="img-overlay">
    <img src="http://placekitten.com/200/200">
</div>

应用以下CSS:

.img-overlay {
    border: 1px solid blue;
    float: left;
    position: relative;
}
.img-overlay:before {
    content: '';
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    right: 0;
    background-color: white;
    filter: alpha(opacity=40); /* internet explorer */
    opacity: 0.4; /* fx, safari, opera, chrome */
    -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(opacity=40)"; /*IE8*/
}
img {
    display: block;
} 

请参阅http://jsfiddle.net/audetwebdesign/DkRJs/

上的演示

我们的想法是使用绝对定位将元素放在图像上,然后应用不透明度属性。

如果较旧的浏览器不支持伪元素,则需要直接放入HTML代码。

注意:我只是重读原来的问题并意识到我解决了错误的问题。 很抱歉给您带来不便。

IE8问题

我在IE8中对此进行了测试,并且意识到您需要filter属性才能使其完全向后兼容。

答案 1 :(得分:1)

这不是理想的,但您可以使用1px x 1px透明png作为重复背景图像。 您甚至可以使用IE条件注释来执行此操作,以便仅针对IE8。

你也可以使用:

img:hover{opacity:0.8}