讓PNG圖片在IE瀏覽器下顯示透明背景

2010-08-28 10:53:37來源:西部e網(wǎng)作者:

PNG圖片色彩豐富而深受很多UI設(shè)計者的喜愛,但是在IE下對PNG圖片支持得并不是很好,但是在Firefox和Opera瀏覽器下卻是不錯的。尤其是IE6下,根本顯示不出來PNG透明和半透明的特性來,IE7現(xiàn)在已經(jīng)支持了。

1、使用Javascript

好處:通吃各種瀏覽器

代碼如下:

< script language="JavaScript">
function correctPNG() // correctly handle PNG transparency in Win IE 5.5 & 6.
{
     var arVersion = navigator.appVersion.split("MSIE")
     var version = parseFloat(arVersion[1])
     if ((version >= 5.5) && (document.body.filters))
     {
       for(var j=0; j<document.images.length; j++)
       {
           var img = document.images[j]
           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 = "<span " + imgID + imgClass + imgTitle
             + " style=\"" + "width:" + img.width + "px; height:" + img.height + "px;" + imgStyle + ";"
             + "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"
             + "(src=\'" + img.src + "\', sizingMethod='scale');\"></span>"
             img.outerHTML = strNewHTML
             j = j-1
           }
       }
     }   
}
window.attachEvent("onload", correctPNG);
< /script>


2、使用CSS濾鏡

因為firefox等瀏覽器是不支持濾鏡的,所以寫起來會比較復(fù)雜。

代碼如下:

#div1 {
   height: 600px;
   width: 260px;
   padding: 20px;
   background-repeat: repeat;
}

/* for ie7 ff*/
html>body #div1 {
     background:url(../images/menu1.png) no-repeat;
}
/* for ie6 */
* #div1 {
     background:none;
     filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/menu1.png', sizingMethod='crop');
}

需要注意的是:AlphaImageLoader濾鏡會導(dǎo)致該區(qū)域的鏈接和按鈕無效,解決的辦法是為鏈接或按鈕添加:position: relative;這樣條代碼,使其相對浮動。AlphaImageLoader無法設(shè)置背景的重復(fù),所以對圖片的切圖精度會有很高的精確度要求。

3、使用CSS濾鏡和hack

html>body .png { background:url(1.png); width:300px; height:100px; border:#000 solid 1px;}

/* ie6 */* html .png { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=scale, src='1.png'); background:none; width:300px; height:100px; border:#000 solid 1px;}

關(guān)鍵詞:css

贊助商鏈接: