眾所周知,透明格式的PNG24在IE6透明部分將會被灰色替代。
那么,到底有什么方法可以解決這個bug?
解決方法:
①用PNG8格式圖片替代PNG24格式的圖片
用fireworks導出Alpha模式的PNG8格式的圖片,Alpha模式的PNG8格式圖片支持半透明,在IE6下全透明以及半透明部分會顯示成全透明,并且會存在鋸齒。如果對用戶體驗影響不是很大的話,可以考慮一下用這個方法。
②CSS濾鏡
在應用了透明PNG圖片的選擇器里面加上一下代碼:
_background: transparent;
_filter: progid:DXImageTransform.Microsoft.AlphaImageLoader (src=’img/nav.png’, sizingMethod=’scale’);
這種方法的缺點:
(a)只能用于背景圖片是透明的情況下,頁面中的PNG透明圖片無效;
(b)背景圖片無法平鋪,只能拉伸;
(c)導致該區域內的鏈接和按鈕失效;
解決方法:在該區域外部添加鏈接或者按鈕,再用margin覆蓋到該區域上面;也可以用position定位實現。
③jQuery PNG fix插件
相對于前面的方法,jQuery的IE6下png透明插件相對要強大些。插件jquery.pngFix.js下載以及具體使用方法。
由于地址上的是英文,在這里還是簡單翻譯一下吧。
在head內部添加:
<!–[if IE 6]>
<script type=”text/javascript” src=”jquery.js”></script>//jq庫,請自行下載
<script type=”text/javascript” src=”jquery.pngFix.js”></script>//注意路徑
<script type=”text/javascript”>
$(document).ready(function(){
$(document).pngFix();
});
</script>
也可以針對特定的選擇器:
<script type=”text/javascript”>
$(document).ready(function(){
$(‘.png’).pngFix( );//.png改成使用了透明PNG圖片的選擇器
});
</script>
<![endif]–>
缺點:不支持backgrond-position和background-repeat。
④DD_belatedPNG插件
DD_belatedPNG支持backgrond-position和background-repeat,同時DD_belatedPNG還支持a:hover屬性,以及<img>.
這個插件使用了微軟的VML語言進行繪制,而其他多數解決PNG問題的方法用的是AlphaImageLoader濾鏡,插件DD_belatedPNG下載地址以及具體使用方法。
使用方法翻譯:
<!–[if IE 6]>
<script src=”DD_belatedPNG.js” mce_src=”DD_belatedPNG.js”></script>
<script type=”text/javascript”>
DD_belatedPNG.fix(‘.png’);// .png改成使用了透明PNG圖片的選擇器
</script>
<![endif]–>
我沒有實際用過這種方法,但是在寫這篇文章做測試的時候初步感覺還是這個方法比較好。下次切圖的時候會嘗試一下用這種方法。
新聞熱點
疑難解答