к сожалению, хотя IE7 поддерживает прозрачные PNG, только один фильтр может быть применен к элементу одновременно.
В вашем приложении происходит то, что IE7 применяет альфа-фильтр к вашему PNG, а затем jQuery просит применить другой альфа-фильтр для затухания. Это имеет видимые результаты, как вы сказали.
Способ обойти это состоит в том, чтобы поместить ваш 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);
ПРИМЕЧАНИЕ Изначально плагин был написан для исправления прозрачности PNG в IE6, но я изменил его для работы с вашей проблемой в IE6 +.
Sidenote: Я не могу вспомнить, хотя думаю, что IE8 может иметь ту же проблему. Поправь меня, если я ошибаюсь:)