使用"-ms-filter"属性时如何保持PNG alpha透明度

cbp*_*cbp 5 css png opacity internet-explorer-8 internet-explorer-7

我有以下HTML:

<a><img src="myfile.png" /> Some text</a>
Run Code Online (Sandbox Code Playgroud)

这个css:

a:hover
{
    -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=75)";
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=75);
    opacity: .75;
}
Run Code Online (Sandbox Code Playgroud)

IE 8和IE 7都存在这个问题.

当PNG图像受-ms-filter过滤器影响时,其alpha透明度将被破坏.尝试一下,你会看到.这是IE 8和IE 7中的一个错误.

我可以删除CSS中应用的"-ms-opacity"和"filter"属性吗?这是什么语法?(例如-ms-filter:"";)

有谁知道解决这个问题的方法?

cbp*_*cbp 10

只是修饰SpliFF的答案,我可以通过在页面中添加以下jQuery来解决这个问题:

$(function() {
    if (jQuery.browser.msie)
        $('img[src$=".png"]').each(function() { // must have quotes around .png
            this.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src="+this.src+",sizingMethod='scale')";
        });
});
Run Code Online (Sandbox Code Playgroud)

这将在页面中的所有PNG中应用AlphaImageLoader.


Spl*_*iFF 4

更新:直接应用于 img 的AlphaImageLoader过滤器可能会覆盖 Alpha 过滤器。至于去除过滤器你尝试过吗filter:none;

是的,通过条件注释以编程方式定位 IE6 及更低版本。

<!--[if lt IE 7]>
<style>a:hover{filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=75);}</style>
<![endif]-->
Run Code Online (Sandbox Code Playgroud)

此外,像IE7-js这样的脚本将为您处理 PNG 透明度,而不会用非标准代码弄乱您的 CSS。

<!--[if lt IE 7]>
<script src="http://ie7-js.googlecode.com/svn/version/2.0(beta3)/IE7.js" type="text/javascript"></script>
<![endif]-->
Run Code Online (Sandbox Code Playgroud)