日期:2014-05-17  浏览次数:20646 次

解决CSS滤镜同时过滤文字的问题
初用CSS滤镜的朋友可能会遇到这样的问题:给div套上filter:alpha(opacity=50);  滤镜后,里面的文字也随之半透明,这种情况下,我们该怎么办呢?

经过本人查阅大量资料,实验N次终于找到了一个兼容ie6,ie7,ie8以及firefox的css透明滤镜的方法,且看我举例说明.

<div id=”body”>
<span><龙哥博客>解决CSS滤镜同时过滤文字的问题</span>
</div>


<style type=”text/css”>
#body{ border:1px solid #c00; background-color:rgba(212,0,0,0.5); background:#f00\9; filter:alpha(opacity=10); width:500px; margin:40px auto; line-height:200%; font-size:14px; padding:14px;}
</style>

这样的代码并不能解决过滤文字的问题,想要不过滤文字,就必须在CSS代码里加上这行代码:
#body *{ position:relative;}

星号是为了让IE6和IE7执行,火狐和IE8就不执行了,火狐本身来讲就不支持IE特有的滤镜功能,所以这里没必要再加星号,怎么样?很简单吧~

原文地址:http://www.52blogger.com/archives/532
1 楼 云端有天堂 2010-06-30  
事实上opacity这个滤镜本身就应该连同文字,连同子元素一起透明。如果想做到背景透明,ie有更合适的滤镜:

#body{ 
/** ie 6 & 7**/
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#550000FF, endColorstr=#550000FF);

/** ie 8**/
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#550000FF, endColorstr=#550000FF)";

}



更多的看这里吧(英):
http://leaverou.me/2009/02/bulletproof-cross-browser-rgba-backgrounds/




2 楼 bingxingke2 2010-06-30  
云端有天堂 写道
事实上opacity这个滤镜本身就应该连同文字,连同子元素一起透明。如果想做到背景透明,ie有更合适的滤镜:

#body{ 
/** ie 6 & 7**/
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#550000FF, endColorstr=#550000FF);

/** ie 8**/
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#550000FF, endColorstr=#550000FF)";

}



更多的看这里吧(英):
http://leaverou.me/2009/02/bulletproof-cross-browser-rgba-backgrounds/





LS强人也