【发布时间】:2009-12-05 15:26:31
【问题描述】:
我正在建立一个网站,其中包含大量具有透明背景的 png-24 文件。在 IE 6 中,它们显然没有正确显示,所以我需要某种可靠的、好的解决方案来解决 IE 中的 PNG 问题,并且需要很少的工作并且可靠。有什么好主意吗?
【问题讨论】:
标签: internet-explorer-6 png-24 alpha-transparency
我正在建立一个网站,其中包含大量具有透明背景的 png-24 文件。在 IE 6 中,它们显然没有正确显示,所以我需要某种可靠的、好的解决方案来解决 IE 中的 PNG 问题,并且需要很少的工作并且可靠。有什么好主意吗?
【问题讨论】:
标签: internet-explorer-6 png-24 alpha-transparency
对于 IE6 透明度,我遵循个人流程:
1.如果只有一个或两个 PNG 图像(如徽标或普通图像),我只需使用 filter:
#selector {background:none; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='test.png', sizingMethod='crop');}
问题:如果应用于链接,它将不再可点击。可能适用于h1#logo 并让a 透明。
2.如果我有很多 24 位 PNG 文件,或特殊用例(重复背景等),我会使用 DD_belatedPNG
对 IE7 + IE8 的重要提示: 您不能对 filter:alpha 进行动画处理或组合(它用于 IE 中元素上的整体 opacity,也被 jQuery 用于设置 opacity)具有 24 位透明 PNG 图像的属性。它将其更改为看起来像 8 位透明度,所有不是 100% 不透明或透明的东西都呈现黑色背景。
【讨论】:
这里有一些针对 ie6 的好的 png 修复:
【讨论】:
网上有很多IE PNG 修复,基本上都使用相同的技术。较旧的 Internet Explorer 不直接支持 PNG 中的 alpha,但它们都有一个过滤器可以支持。因此,将以下代码编写为对象的 css 的一部分,会将 src 中的图像放到元素的背景中:
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='image.png');
这样,您可以轻松地在 Internet Explorer 中显示透明度。但是,仅获取一个 png 修复脚本(在 JavaScript 中)并将其包含在条件 cmets 内的页面中要容易得多。然后该脚本将使您的所有图像自动工作。
【讨论】:
VML 来使用 24 位 PNG。然后它们仍然可以用于重复背景等。
DD_belatedPNG 使用它(在我的回答中),可能还有@Danny 在他的回答中建议的twinhelix。
为此,我们使用了 Dean Edwards 的IE7。 (在 IE7 出现之前就这样命名了。)这种东西很好用。
【讨论】:
目前有很多选项可以让这个工作正常进行。标准是通过 CSS 应用 DirectX 过滤器来改变使 PNG 在 IE6 中透明。当网页从 IE6 或更低的客户端加载时,甚至有脚本会自动执行此操作。
http://www.google.com/search?btnG=1&pws=0&q=transparent+png+ie6
【讨论】: