【发布时间】:2011-04-26 11:06:12
【问题描述】:
【问题讨论】:
标签: internet-explorer-8 internet-explorer-7 transparency opacity
【问题讨论】:
标签: internet-explorer-8 internet-explorer-7 transparency opacity
请务必注意,如果不设置 WIDTH,IE7 中的 ALPHA 过滤器将无法工作。
【讨论】:
我有一个解决方案,之前在多个网站上使用过。
在您的 html 内容写入页面后,只需运行此函数:
function fixPNGs(){
if(jQuery.browser.msie && jQuery.browser.version < 9){
var i;
//alert(document.images.length);
for(i in document.images){
if(document.images[i].src){
var imgSrc = document.images[i].src;
if(imgSrc.substr(imgSrc.length-4) === '.png' || imgSrc.substr(imgSrc.length-4) === '.PNG'){
document.images[i].style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled='true',sizingMethod='crop',src='" + imgSrc + "')";
}
}
}
}
}
它只适用于 img 元素,而不适用于背景图像。但是一旦应用,您就可以淡入和淡出图像并根据您的内心内容制作动画。我在一些雄心勃勃的动画中遇到了一些奇怪的副作用,但在 90% 的情况下它都很好。
希望对您有所帮助!
W.
【讨论】:
IE7 和 IE8 在 PNG 中支持不同类型的透明度。那边没问题。
你遇到的问题是 IE7 和 IE8 不支持 CSS opacity。你很可能有一个动态操纵不透明度(element.style.opacity)的 JS 脚本,例如产生淡入淡出效果。如果 IE7 和 8 不支持不透明度,脚本如何更改 element.style.opacity?它使用 DirectX 过滤器,您可以使用 CSS 过滤器:alpha (opacity = 50);
DirectX 过滤器不是原生支持。结果是它常常伴随着副作用。该项目将以部分不透明度显示 不会由图形引擎“普通”浏览器呈现,而是直接由 DirectX 呈现......在某些情况下,CSS 定位上的字体呈现不同,并且......支持 PNG 透明度.
解决方案:消除两个参数之一。
【讨论】: