IE8,透明PNG和过滤器:alpha

Posted

技术标签:

【中文标题】IE8,透明PNG和过滤器:alpha【英文标题】:IE8, transparent PNG and filter:alpha 【发布时间】:2011-06-15 09:49:07 【问题描述】:

我会切入正题。这是输出:

(现在是一些可选代码 - 仅在您真正需要时阅读;))

这是标记:

<a href="/" id="logo_wrapper">
    <span class="logo logo_normal"></span>
    <span class="logo logo_hover"></span>
</a>

这里是 CSS(为了您的阅读乐趣,仅缩短为相关内容):

#logo_wrapper 
  position:relative;

#logo_wrapper .logo 
  display:block;
  width:260px;
  height:80px;
  background-image:url(logo.png);
  position:absolute;

#logo_wrapper .logo_normal 
  background-position:0 0;

#logo_wrapper .logo_normal:hover 
  opacity:0;
  filter:alpha(opacity=0);

#logo_wrapper .logo_hover 
  background-position:0 -80px;
  opacity:0;
  filter:alpha(opacity=0);

#logo_wrapper .logo_hover:hover 
  opacity:1;
  filter:alpha(opacity=100); /* THIS IS THE OFFENDER! */

澄清一下:我知道我可以使用单个 span 并在悬停时切换徽标的 background-position,但完整的 CSS 为不应该滚动的真实浏览器提供了可爱的 CSS3 过渡标志上下。

好的,它是一个具有 32 位色深的 PNG,当然还有透明度。当我根本不使用 alpha 过滤器或 filter:alpha(opacity=0) 时,在 IE8 中一切都很好。但是在不透明度设置为 100 的情况下,仅仅使用过滤器就会导致 IE8 发疯,并使所有不完全透明的像素 100% 不透明。并不是说这个特殊的图像在这个效果下看起来很糟糕,但它仍然很烦人:D。

现在,我很清楚 IE8 因透明 PNG 问题而臭名昭著,这些问题可以追溯到 IE6 以及透明区域的可怕纯青色填充。这个问题可以通过一些 IE 行为黑魔法来修复。

IE8 可以做什么?

【问题讨论】:

IE8 可以被摧毁和活埋,再也看不到了。很抱歉,这可能不是您要找的答案。 :) 我完全同意:D。我和你一样讨厌它,相信我:P 【参考方案1】:

在您的 :hover 类中使用 filter:none

【讨论】:

【参考方案2】:

一个简单的解决方法:只需为 .logo_hover:hover 添加背景颜色,alpha 过滤器就会再次正常工作。

显然,此修复程序并不总是有用(也就是说,如果您无法在 png 下方使用模拟真实背景的背景颜色)。

【讨论】:

背景颜色为我解决了这个问题,我从来没有想过 :) 感谢您的提示【参考方案3】:

这对我有用:

filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='logo.png', sizingMethod='scale', alpha(opacity=100));

感谢 SLaks!!

【讨论】:

【参考方案4】:

您需要使用AlphaImageLoader 过滤器,就像 IE6 一样。

【讨论】:

我正在尝试这样做,但 IE 似乎完全忽略了这一点。这是我的声明:filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='logo.png', sizingMethod='scale')alpha(opacity=100); - 结果和之前的 x_x 完全一样……我做错了吗? 嗯,其实更糟糕的是:使用它根本不会显示任何图像。我这里有点疑惑…… @mingos:是的;您需要使用, 分隔过滤器。 好的,谢谢。我太困了,现在无法尝试,但我明天晚上会回到这个:)。 不幸的是,这根本不起作用。图像根本没有出现:(。

以上是关于IE8,透明PNG和过滤器:alpha的主要内容,如果未能解决你的问题,请参考以下文章

由于不透明过滤器,IE8 div 溢出不可见(截止)

烦人的IE78,半透明滤镜(filter:alpha)失效png半透明失效的解决办法

<=IE8 的 CSS3 有效“不透明度”

如何在PDF中插入透明PNG?

如果存在背景颜色,IE8 渐变过滤器将不起作用

如何降低 svg 滤镜中 Alpha 层的不透明度?