0

我有一个要设置不透明度的 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 的子元素变得透明。

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

有人有什么建议吗?

谢谢!

4

1 回答 1

1

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

来自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]-->

或(使用条件类)

<!--[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 x 1px 透明 png 重复作为元素的背景图像。

于 2013-01-31T00:09:51.090 回答