css – rgba背景与IE过滤器替代:IE9呈现两者!

前端之家收集整理的这篇文章主要介绍了css – rgba背景与IE过滤器替代:IE9呈现两者!前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试使用CSS3 rgba()和微软的过滤器属性混合使用div的背景透明度:
div {
    width: 200px;
    height: 200px;
    /* blue,50% alpha */
    background: rgba(0,255,0.5);
    /* red,50% alpha */
    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#7FFF0000,endColorstr=#7FFF0000);
}

如预期的那样,支持rgba()的浏览器会将div渲染为蓝色,而IE 6-8会将其呈现为红色.

IE9可以显然处理这两个(以前我以为过滤器支持删除),结果是一个紫色的div.有没有办法使IE9支持这些属性,但不支持其他属性? rgba()显然是首选.

注:我正在使用IETester来运行这些测试.如果IE9的正确构建不这样做,请让我知道.

解决方法

我想出了一个我认为我会分享的恶作剧.

IE9及以上版本支持:not()CSS伪选择器.通过使用元素上不存在的属性,我们可以让IE9禁用它的过滤器渐变:

div {
    width: 200px;
    height: 200px;

    /* For FF,Chome,Opera,IE9+ */
    background: rgba(0,0.5);

    /* For IE6-9 */
    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#7FFF0000,endColorstr=#7FFF0000);
}

div:not([dummy]) {
    /* IE9 only */
    filter: progid:DXImageTransform.Microsoft.gradient(enabled='false');
}

我最终使用这个,因为我的透明div只有一次功能.它也似乎有点整洁地保存CSS,而不是在HTML中使用条件注释.

编辑:为了支持其他答案,我发现微软开发团队的this article鼓励开发人员使用条件注释,而不是我的CSS解决方案.

猜你在找的CSS相关文章