在使用PNG透明和不透明时,ie7和ie8中的盈余而不是透明

Posted

技术标签:

【中文标题】在使用PNG透明和不透明时,ie7和ie8中的盈余而不是透明【英文标题】:Surplus in ie7 and ie8 intead of being Transparent while using PNG transparent and opacity 【发布时间】:2011-04-26 11:06:12 【问题描述】:

我正在开发一个使用PNG透明和不透明度的项目,但是该区域在IE7和IE8中有多余的而不是透明的,它是黑色的,有人可以帮助我吗?

print of area

谢谢

【问题讨论】:

【参考方案1】:

请务必注意,如果不设置 WIDTH,IE7 中的 ALPHA 过滤器将无法工作。

【讨论】:

【参考方案2】:

我有一个解决方案,之前在多个网站上使用过。

在您的 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.

【讨论】:

【参考方案3】:

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 透明度.

解决方案:消除两个参数之一。

【讨论】:

不工作,抱歉,flash 解决了问题,为 flash 更改功能轮播。

以上是关于在使用PNG透明和不透明时,ie7和ie8中的盈余而不是透明的主要内容,如果未能解决你的问题,请参考以下文章

CSS 在Windows上使用Firefox 3并且wmode透明或不透明时,删除SWF周围的虚线边框

header/footer/nav 标签——在 IE7、IE8 和不支持 HTML5 的浏览器中会发生啥?

如何在ie6/ie7/ie8中实现iframe背景透明

烦人的IE78,半透明滤镜(filter:alpha)失效png半透明失效的解决办法

jquery循环IE7透明png问题

即使触发了 hasLayout,CSS 不透明度也无法在 IE7 或 IE8 中工作