关于IE6下,png格式的图片背景显示成灰色的问题

PNG格式的图片在使用透明效果时,有远远超过GIG格式的效果。但是,大家会发现,如果将透明背景的PNG格式图片放在网页上,用IE6.0打开时,背景成了灰色了?不但不好看,反而影响了美观。

在IE7.0以上的版本,PNG格式的透明图片是正常显示的。这让我们通常会碰到一个现象,打开老外的网站时,他们那群白痴,怎么都将不透明的图片放得那么难看呵?他们看不见吗?还是他们审美有毛病!?

其实,多数老外使用的IE已经不在IE6.0上了,他们要么用7.0以上的,要么用火狐,谷歌浏览器,所以,而出于PNG格式的图片显示效果的优越性,他们通常会使用PNG类型的透明背景图,但因为他们使用的IE级别高原因,使他们习惯性的忽略了使用IE6.0的浏览者,在他们看来,现象效果是非常优美的(他们普遍用的IE都是比较高的版本了),可到了我们看的时候就“变质了”。

那么,怎么处理这种“种族歧视”的不足呢?

将下面的代码拷贝到要用的地方就可以了

function correctPNG()
   {
   for(var i=0; i       {
     var img = document.images[i]
     var imgName = img.src.toUpperCase()
     if (imgName.substring(imgName.length-3, imgName.length) == "PNG")
        {
       var imgID = (img.id) ? "id='" + img.id + "' " : ""
       var imgClass = (img.className) ? "class='" + img.className + "' " : ""
       var imgTitle = (img.title) ? "title='" + img.title + "' " : "title='" + img.alt + "' "
       var imgStyle = "display:inline-block;" + img.style.cssText
       if (img.align == "left") imgStyle = "float:left;" + imgStyle
       if (img.align == "right") imgStyle = "float:right;" + imgStyle
       if (img.parentElement.href) imgStyle = "cursor:hand;" + imgStyle    
       var strNewHTML = "         + "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"
       + "(src=\'" + img.src + "\', sizingMethod='scale');\">
"
       img.outerHTML = strNewHTML
       i = i-1
        }
      }
   }
function alphaBackgrounds(){
   var rslt = navigator.appVersion.match(/MSIE (d+.d+)/, '');
   var itsAllGood = (rslt != null && Number(rslt[1]) >= 5.5);
   for (i=0; i       var bg = document.all[i].currentStyle.backgroundImage;
      if (bg){
         if (bg.match(/.png/i) != null){
            var mypng = bg.substring(5,bg.length-2);
   //alert(mypng);
            document.all[i].style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+mypng+"', sizingMethod='crop')";
            document.all[i].style.backgroundImage = "url('')";
   //alert(document.all[i].style.filter);
         }                                              
      }
   }
}

if (navigator.platform == "Win32" && navigator.appName == "Microsoft Internet Explorer" && window.attachEvent) {
window.attachEvent("onload", correctPNG);
window.attachEvent("onload", alphaBackgrounds);
}

你也可以将以上代码保存为比如png.js,在使用的地方进行调用。那IE6下烦人的灰色背景,便会消失了。为方便大家,卓航科技在此已将代码文件上传,你只需点击下面的地址就可将该png.js文件下载回去,在需要的时候,直接调用就行。