平常,我們經常使用Gif格式的圖片以保持圖片在瀏覽器中透明,以支援底色。但由於IE瀏覽器本身的原因,我們無法使透明的PNG圖片透明起來,我們經常會看到這樣的效果:
這張圖片在圖形製作軟體比如PHOTOSHOP,Fireworks等上面查看都是透明的,但在IE瀏覽器中就變得不透明了,有一層灰灰的底色,是不是很難看?
那麼,如何將它在IE瀏覽器下變得透明呢?
首先看我們的<img>標籤代碼:
<img src="Example.png" border="0" alt="放大鏡" />
我們的目標是......?(沒有蛀牙?)不,我們的目標是將它透明,並使之也要保持其他屬性,比如alt提示。
我們將利用IE中特有的特效來滿足這個要求,這就是AlphaImageLoader Filter (http://msdn.microsoft.com/library/default.asp?url=/workshop/author/filter/reference/filters/alphaimageloader.asp)
如何做?
將下面代碼儲存為correctPNG.js:
function correctPNG()
{
for(var i=0; i<document.images.length; 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 = "<span " + imgID + imgClass + imgTitle
+ " style=/"" + "width:" + img.width + "px; margin:6px; height:" + img.height + "px;" + imgStyle + ";"
+ "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"
+ "(src=/'" + img.src + "/', sizingMethod='scale');/"></span>"
img.outerHTML = strNewHTML
i = i-1
}
}
}
window.attachEvent("onload", correctPNG);
然後在你需要透明的網頁中的<head>....</head>區加入:<script type="text/javascript" src="correctPNG.js"></script>
在<body>區加入多個與<img src="Example.png" border="0" alt="放大鏡" />類似的PNG圖片,試試看?
這是效果:
OK。