当我在 IE7 中有透明 png 文件时,我无法让 jquery 循环正常工作
在 Firefox 和 Chrome 中没问题,但在 IE(版本 7)中我得到黑色,其中 png 透明度处于淡入淡出期间。
这可以正常工作吗?
最佳答案
不幸的是,虽然 IE7 支持透明 PNG,但一次只能对一个元素应用一个过滤器。
您的应用程序中发生的情况是,IE7 正在将 alpha 过滤器应用于您的 PNG,然后 jQuery 要求应用另一个用于淡入淡出的 alpha 过滤器。正如您所说,这已经产生了明显的结果。
解决这个问题的方法是将你的 png 嵌套在一个容器中,然后淡入容器。有点像这样:
<div id="fadeMe">
<img src="transparent.png" alt="" />
</div>
解决这个问题的另一种方法是我使用这个简单的 jQuery 插件,因为我无法更改结构。我会注明出处,但老实说我不记得在哪里找到它的。
/* IE PNG fix multiple filters */
(function ($) {
if (!$) return;
$.fn.extend({
fixPNG: function(sizingMethod, forceBG) {
if (!($.browser.msie)) return this;
var emptyimg = "empty.gif"; //Path to empty 1x1px GIF goes here
sizingMethod = sizingMethod || "scale"; //sizingMethod, defaults to scale (matches image dimensions)
this.each(function() {
var isImg = (forceBG) ? false : jQuery.nodeName(this, "img"),
imgname = (isImg) ? this.src : this.currentStyle.backgroundImage,
src = (isImg) ? imgname : imgname.substring(5,imgname.length-2);
this.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "', sizingMethod='" + sizingMethod + "')";
if (isImg) this.src = emptyimg;
else this.style.backgroundImage = "url(" + emptyimg + ")";
});
return this;
}
});
})(jQuery);
注意最初该插件是为了修复 IE6 中的 PNG 透明度而编写的,但我对其进行了修改以解决 IE6+ 中的问题。
旁注:我记不清了,但我认为 IE8 可能也有同样的问题。如果我错了请纠正我:)
关于asp.net - jquery循环IE7透明png问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1156985/