【发布时间】:2011-02-07 16:16:30
【问题描述】:
我有一个动画和显示 DIV 的 jquery 切换。我有一个透明的PNG,阴影类型的背景图片,当它第一次出现时,我看到一个黑色的背景,然后一旦图像加载它就会消失......
有没有办法解决这个问题?那是一个错误吗?我的动画速度很慢,所以可能与它有关。
我应该让它显示()吗?
【问题讨论】:
标签: jquery png transparent
我有一个动画和显示 DIV 的 jquery 切换。我有一个透明的PNG,阴影类型的背景图片,当它第一次出现时,我看到一个黑色的背景,然后一旦图像加载它就会消失......
有没有办法解决这个问题?那是一个错误吗?我的动画速度很慢,所以可能与它有关。
我应该让它显示()吗?
【问题讨论】:
标签: jquery png transparent
这是 IE 中的一个错误。
当前版本的 IE 不支持 opacity CSS 属性,因此 jQuery 使用 Alpha 过滤器。但是,过滤器会强制元素完全不透明,因此它们不能正确处理透明的 PNG。
要在半透明元素中使用透明 PNG,需要使用 AlphaImageLoader 过滤器(即使在 IE8 中)应用 PNG。例如:
if ($.browser.msie)
$(something).css({
background: 'none',
filter: 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src="/Folder/Image.png", sizingMethod="scale"),alpha(opacity=100)'
});
(此代码有效;我正在使用它)
【讨论】:
alphaimageloader 和 alpha 的组合与 opacity 的组合也不完全相同。每个像素的透明度似乎是max(image_opacity, filter_opacity) 而不是image_opacity*filter_opacity。 (这在动画中并不总是令人不快的效果。)