做Web開發(fā)的朋友一定都知道PNG是一個(gè)相當(dāng)不錯(cuò)的圖片格式,但是這個(gè)好的格式卻在IE6時(shí)代造成了麻煩,IE6會(huì)使透明的PNG的透明部分出現(xiàn)#DBEAED的色彩。透明不了。使得在FF下開發(fā)表現(xiàn)很好的界面換成IE瀏覽就慘不忍睹,又逼著換成GIF,而GIF的假透明在變換背景時(shí)造成毛邊現(xiàn)象。
圖片在網(wǎng)頁中有兩種,一是直接的<img/>標(biāo)簽,還有是放在css引用中作背景,這兩種方式的PNG透明處理方法也不一樣。
首先看<img/>標(biāo)簽的解決辦法。這號(hào)稱是官方的解決方案,下面是核心函數(shù):

Code
1 /*
2 Correctly handle PNG transparency in Win IE 5.5 & 6.
3 Copyright 2007 Ignia, LLC
4 Based in part on code from from http://homepage.ntlworld.com/bobosola.
5
6 Use in with DEFER keyword wrapped in conditional comments:
7
8 <script type="text/javascript" defer="true" src="pngfix.js"></script>
9
10 */
11
12 function fixPng() {
13 var arVersion = navigator.appVersion.split("MSIE")
14 var version = parseFloat(arVersion[1])
15
16 if ((version >= 5.5 && version < 7.0) && (document.body.filters)) {
17 for(var i=0; i<document.images.length;></document.images.length;> var img = document.images[i];
18 var imgName = img.src.toUpperCase();
19 if (imgName.indexOf(".PNG") > 0) {
20 var width = img.width;
21 var height = img.height;
22 var sizingMethod = (img.className.toLowerCase().indexOf("scale") >= 0)? "scale" : "image";
23 img.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + img.src.replace('%23', '%2523').replace("'", "%27") + "', sizingMethod='" + sizingMethod + "')";
24 img.src="images/blank.gif" mce_src="images/blank.gif";
25 img.width = width;
26 img.height = height;
27 }
28 }
29 }
30 }
31
32 fixPng();
再看css背景方式的解決辦法:
這個(gè)方法是Dean Edwards 的 IE7提出的。英語還過的去的可以直接去看原文:http://dean.edwards.name/ http://code.google.com/p/ie7-js/
首先要下載這個(gè)js,然后在<head></head>加入下面這段
<!-- compliance patch for microsoft browsers --><!--[if lt IE 7]><script src="/ie7/ie7-standard-p.js" type="text/javascript"></script><![endif]-->
再把PNG 圖片名字存為“你的文件名-trans.png”。文件名字記得一定要有 -trans。例如: img-trans.png, tupian-trans.png, logo-trans.png
ps:這個(gè)方法不支持IE5,但在IE5.5和IE6下正常。
Tag標(biāo)簽: 規(guī)范,JavaScript