我正在尝试使用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解决方案.
原文地址:https://www.jb51.cc/css/217205.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。