-->

用透明的PNG图片IE6的问题(IE6 issues with transparent PNGs)

2019-07-01 18:56发布

我已经习惯了的想法,如果我想/需要一个跨浏览器的方式使用的α反PNG图像,我用一个背景图像上一个div,然后在IE6只CSS,纪念背景“无”,包括适当的‘过滤器’的说法。

有另一种方式? 更好的办法? 有没有办法与img标签,而不是与背景图像来做到这一点?

Answer 1:

底线是,如果你想在一个PNG Alpha透明度,你希望它工作在IE6,那么你需要应用了AlphaImageLoader滤镜。

现在,有许多方法来做到这一点:浏览器特定的黑客,条件注释,使用Javascript / JQuery的/ JLibraryOfChoice元迭代,服务器端通过用户代理嗅探CSS-服务...

但是,所有的“时间回落到其应用滤镜和去除背景。



Answer 2:

这里有一个具体的解决方案,我喜欢,使用JavaScript(jQuery的):

http://jquery.andreaseberhard.de/pngFix/

可以很容易地添加到现有的网站,处理图像(表单按钮,背景,定期IMG标签等)的所有方式,并留下你的CSS非常干净。



Answer 3:

这是最有可能的“最佳”的方式。 但是,请记住,它不只是阿尔法反是IE6不能正确执行,当涉及到PNG文件; 色彩空间是腐败由于IE无法正常执行伽马,从而PNG文件往往表现出比他们应该“暗”。
一种替代“解决方案”,我们在最近的一个项目实施的是每一个png图片以“toGif”级标记,其中的自定义行为.HTC被称为从而改变巴纽扩展.gif如果浏览器是CSS检测是一个我们已经标记为一个问题。 我们只包括每一个PNG的GIF版本,沿着它在相同的路径,如果浏览器被发现是一个不处理PNG格式正确,它与图像的GIF版本交换出来。 因此,我们牺牲阿尔法混合有利于保证完全的透明度和色彩精确度,只有做到这一点,当我们知道它可能不会右看看原样。
它可能不是一个理想的解决方案,但它是跨浏览器的性质,我想。
编辑:其实现在,我看有问题的项目中,我们使用了所谓的“阿尔法”,以及一个IMG类自动扔在图像上正确的过滤器的.HTC行为。 所以你检测使用JavaScript,而不是IE6,只有纯CSS黑客浏览器,所以它可能是更优雅一点......但它基本上是一样的。
为了介绍如何编写DHTML行为,试试这个链接 。



Answer 4:

图像加载器是IE6唯一可用的修补程序。 需要注意的是它的PNG支持是非常基本的(与IE7,也一起),而不能正确处理循环透明背景。 我这里学到的东西试图设计一个网站,一个透明的容器,当硬盘的方式。 在Firefox完美工作,当然。

此修复程序应该是背景和任何透明的前景图像的小面积确定,但同样我会建议对设计使用了大量的与Internet Explorer透明度网站。

到底我的解决办法是,以显示一个平面彩色的IE,但是保留其他浏览器中的透明度。 没有伤害的设计到底太多了,还好。



Answer 5:

解决这个另一种方式是使用2幅独立的图像,例如GIF和PNG透明,并相应地针对你的CSS:

/* for IE 6 */
#banner {
    background:url(../images/banner.gif);
}

/* for other browsers */
html > #banner {
    background:url(../images/banner.png);
}

IE 6并不了解CSS子选择器,以便将忽略规则,而那些理解它的浏览器会给你一个很好的透明PNG。

唯一的缺点是,你必须有两个单独的图像和设计可能看起来不完全一样的跨浏览器的,但只要它看起来并不坏,你应该没问题。



Answer 6:

以下是不使用AlphaImageLoader筛选器2个选项。

  • DD_belatedPNG德鲁迪勒 :使用基于VML的解决方案,而不是AlphaImageLoader滤镜。
  • PNGPong :基于闪存的解决方案

对于我来说,如果发送纠结.gif若要IE6不仅是可行的,我用Fireworks来的IE6友好的调色板添加到.PNG 。



Answer 7:

对的img要素通常的解决方法是改变在src指向一个1x1像素透明GIF,然后使用相同的过滤器的黑客。



文章来源: IE6 issues with transparent PNGs