IE 8 Opacity会影响所有子元素

时间:2013-01-31 00:01:02

标签: css internet-explorer internet-explorer-8 opacity

我有一个div我想设置不透明度。我有以下CSS:

background: rgb(255, 255, 255); /* Fall-back for browsers that don't support rgba */
background: rgba(255, 255, 255, .7);
filter: alpha(opacity=70); /* IE 7 and Earlier */
/* Next 2 lines IE8 */
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=70)";
filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=70); 

在兼容的浏览器中工作正常,但在IE 8中,这也使div的子元素透明。

我知道这个问题与this one密切相关,但那里的答案对我不起作用。

有人会有任何建议吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

IE8不支持RGBa,MS Filter不透明度会影响元素及其子元素。

来自http://css-tricks.com/rgba-browser-support/

的建议修复
<!--[if IE]>

   <style type="text/css">

   .color-block { 
       background:transparent;
       filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#50990000,endColorstr=#50990000); 
       zoom: 1;
    } 

    </style>

<![endif]-->

OR(使用条件类)

<!--[if IE 7]>    <html class="no-js ie7 oldie" lang="en"> <![endif]-->
<!--[if IE 8]>    <html class="no-js ie8 oldie" lang="en"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en"> <!--<![endif]-->

   .ie8.your-selector { 
       background:transparent;
       filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#50990000,endColorstr=#50990000); 
       zoom: 1;
    } 

另一种解决方法是使用1px xpp透明png重复作为元素的背景图像..