用于 CSS 背景图像
.yourselector {
width:200px;
height:100px;
background: url(/folder/yourimage.png) no-repeat;
_background:none;
_filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/folder/yourimage.png',sizingMethod='crop');
}
不能与重复背景一起使用,需要使用固定宽度和高度。
用于内联 HTML 图像
img, .png {
position: relative;
behavior: expression((this.runtimeStyle.behavior="none")&&(this.pngSet?this.pngSet=true:(this.nodeName == "IMG" && this.src.toLowerCase().indexOf('.png')>-1?(this.runtimeStyle.backgroundImage = "none",
this.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + this.src + "', sizingMethod='image')",
this.src = "images/transparent.gif"):(this.origBg = this.origBg? this.origBg :this.currentStyle.backgroundImage.toString().replace('url("','').replace('")',''),
this.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + this.origBg + "', sizingMethod='crop')",
this.runtimeStyle.backgroundImage = "none")),this.pngSet=true));
}
这需要一个 1x1px 的透明 GIF 图像
很棒的代码。想起了几天前设置的书签……现在我需要这段代码用于一个项目。谢谢!
验证器?
这些 Hack 不是有效的 CSS,但由于这些 Hack 仅适用于 IE<7,因此您可以使用条件注释,这样验证器和支持 PNG alpha 透明度的浏览器就不会看到这些 Hack。
您可以通过将 IE PNG 修复 Hack 放入一个单独的样式表(或与其他 IE<7 Hack 一起放入一个 CSS 文件)中,然后像这样在您的 HTML 中链接它来实现
IE<7 将看到 iepngfix.css 并修复您的 PNG,而其他所有浏览器(包括验证器)都将其视为 HTML 注释并且不会读取它,因此您的页面可以正常验证。
AlphaImageLoader Hack 是无效的 CSS,但由于这些 Hack 仅适用于 IE 5.5 和 IE 6,因此您可以使用条件注释,这样验证器和支持 PNG alpha 透明度的浏览器就不会看到这些 Hack。
您可以通过将 IE PNG 修复 Hack 放入一个单独的样式表(或与其他 IE 5.5 和 IE 6 Hack 一起放入一个样式表)中,然后像这样在您的 HTML 中链接它来实现
<!--[if lt IE 7]>
IE 5.5 和 IE 6 将看到 iepngfix.css 并修复您的 PNG,IE 5.0 将跳过它因为它不知道 AlphaImageLoader 是什么,而所有其他浏览器和所有验证器都将其视为 HTML 注释并且不会读取其内容,因此您的页面将可以正常验证。<link rel="stylesheet" type="text/css" media="screen, projection" href="iepngfix.css">
<![endif]-->
我的图像上出现了一个覆盖容器……这表示缺少图像,覆盖了我插入的 png 图像。png 的透明度无论如何都会被移除。但这个覆盖层正在造成问题
然后找不到此 .src =“images/transparent.gif”。
对于内联 HTML 图像,“images/transparent.gif”需要是一个 1×1px 的透明 GIF 图像。然后图像覆盖层变得不可见,从而解决了您的问题。
我还有另一个问题:使用 PNG 背景的链接最初位于 PNG 背景图像的顶部,在应用此 Hack 后会位于其后面(因为 Hack 的覆盖层位于链接的顶部)。
我通过在具有 PNG 背景和链接的原始 DIV(class="header")之前添加一个额外的(仅限 IE<7)空 DIV(class="header-ie")来解决此问题,我为它设置了与原始 DIV 相同的宽度和高度。然后,我将原始 DIV 的背景设置为 IE<7 的 none,并将上述滤镜 Hack 应用于额外的仅限 IE<7 的 DIV,并将其定位为 absolute,原始 DIV 为 relative,因此原始 DIV(包含链接)位于仅限 IE<7 的 DIV(包含 PNG 过滤背景)的顶部。
最后,链接再次可点击,而 PNG 透明度在 IE<7 中也正常工作。
这导致了以下 CSS
.header-ie,
.header {
_width: 800px;
_height: 30px;
_background: none;
}
.header-ie {
_position: absolute;
_filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='img/header.png',sizingMethod='crop');
}
.header {
_position: relative;
}
最近研究了使用这种技术,当与 gzip 结合使用时,浏览器无法加载页面。
我在我的网站上使用 DD_belatedPNG 脚本!它对我很有效。该脚本也支持重复背景以及内联图像。顺便说一句,该解决方案包含在名为 HITS- IE6 PNGFix 的 WordPress 插件中
我 100% 同意 Pavel 的观点,DD_belatedPNG 比这里的选项还要好!
原因
– 完美适用于 IE 5.5 和 6。
– 您无需创建额外的文件,如 1×1 图像(虽然这不是一个真正的问题。但它仍然是一个值得考虑的优点)
– 您可以将其用于重复背景。我将其用于图像顶部的点状图案,效果很好。
– 不会为您的网站产生任何额外的加载时间。至少在我目前进行的测试中是这样。
– 您只需要通过 script 标签调用 JS 文件即可
然后,您可以通过定义要用作“修复程序”的类的名称来调用该函数,如下所示
DD_belatedPNG.fix(‘.pngfix’);
然后假设您这里有一个 div,其背景为 png 图像
因此,您将其更改为
搞定!脚本会完成剩下的工作。
我知道我听起来像个推销员,但开源的救星脚本值得重视,因为它让我的工作变得容易多了。我认为这里应该添加一个提示。
这在图像调整大小的情况下不起作用,这很遗憾。
此解决方案对我有用,但仅适用于图像的非交互式放置。
也就是说,图像替换翻转链接可以正常工作,但我无法显示 :hover 图像
再次感谢您让此页面保持活力,Chris,因为它仍然是我“常用”书签之一。
此解决方案对我有用,但如果我们使用该 png 图像作为背景,在这种情况下,解决方案是什么?
对其中很多内容都不熟悉。使用该脚本,“yourimage.png”是作为 PNG 32、PNG 24 还是 PNG 8 的良好 png 图像?我究竟应该在那里使用什么图像?我知道根据 PNG 所在位置使用的 .selector。
此外,我是否需要对每个图像都执行此操作?
这段代码对我修复 IE6 浏览器中的 png 图像背景非常有用,感谢您的解决方案
您好 santosh,您能否通过提供使用此脚本修复 css 背景图像的步骤来帮助我?对我来说,它适用于 html 元素。我在修复 css 背景图像时遇到了问题,提前感谢!
那不使用额外的类和 css 样式呢。
只需将 24 位 png 转换为 8 位 png,以便 IE6 也支持 alpha 透明度。
一个不错的工具是 ImageAlpha,它是 pngnq 和 pngquant(实现此功能)的 GUI。
可以在此处找到免费应用程序
http://pornel.net/imagealpha
(仅限 macOS)
感谢此脚本,因为它在我在 IE6 中遇到问题时让我很酷。但是当我尝试将此脚本用于 css 背景图像时,它无法正常工作。没有任何变化。您能否就此提供帮助,这将使我的事情变得更容易,再次提前感谢
这段代码对我修复 IE6 浏览器中的 png 图像背景非常有用,非常感谢 :)
如果您使用此代码提供任何实际示例,那么对于新手来说非常有用。
谢谢
hamza khan
我不知道为什么,但它对我不起作用。
我正在将 png 用作背景,但它不起作用。
巧妙……巧妙……巧妙!谢谢!
将此样式应用于包含输入框或文本区域的 div 时,会导致无法在其中单击并输入文本。我以为可以用 z-index 修复它,但没有用。要么是丑陋的输入表单,要么是无用的输入表单!
CSS 背景图片示例效果很好。
如果它对任何人都不起作用
图像的路径不能是相对路径。例如:如果它以“../”开头,就像许多 CSS 背景图像 URL 一样,它将不起作用。确保你的以“/”开头。
抱歉,伙计们,什么都不起作用。彻底失败。相信我,如果我装备精良,我会去把微软园区全球的每个开发者都干掉!!! :-(
我在我的 css 中使用了这段代码,但对我来说不起作用,尽管我在 ul 中使用它,并且它具有 position:absolute 属性。
_background:none;
_filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=’/folder/yourimage.png’,sizingMethod=’crop’);
任何建议都非常有帮助
好吧,我找不到网上找到的任何可以帮助我的 IE 技巧。IE 没有正确显示我的页面图像,实际上它到处显示它们,但没有像预期的那样固定到边距上。请帮忙。
谢谢……它起作用了!!!
你们都很聪明……IE 很蠢……Windows 更蠢,看不到这个问题
非常好。对我来说有效