DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> CSS入門知識 >> CSS進階教程 >> CSS實例教程:PNG背景透明在網頁設計中的運用
CSS實例教程:PNG背景透明在網頁設計中的運用
編輯:CSS進階教程     

PNG的背景透明在網頁中應用比較廣泛,但浏覽器的兼容問題一直很讓人頭疼,用的CSS濾鏡再變通一下也能實現PNG背景半透明的兼容問題,只不過不支持背景的定位而已,也就是說不支持CSS SCRIPT。

一、CSS 濾鏡(兩種方法)

  一般能用CSS處理的就盡量不要用JS了,個中的原因,你懂的……

本人整理了一下使用濾鏡的方法處理IE6下的PNG半透明,但該方法也有局限性,不能使用背景定位,也就是不能使用CSS Script

方法1

CSS核心代碼:

background-image:url(weather.png)!important; background-image:url(www.aqy106.com);
filter progid:DXImageTransform.Microsoft.AlphaImageLoader(src='weather.png');

其他浏覽器不需要處理,只需要單獨針對IE6作處理也可以。

方法2CSS核心代碼:

_background:none; _filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='weather.png',sizingMethod='crop');

說明:

方法1

當CSS中出現兩個同樣的屬性,無論是否有!important,IE6只識別最後一個屬性。(IE6是識別!important的,後面的background-image起干擾作用。在Firefox下,!important被優先執行,filter濾鏡不起作用。這個其實只需要處理PNG在IE6中不支持半透明的問題,其他浏覽器都是支持PNG的半透明的,所以不需要處理。該方法使用也有局限性,就是不支持圖片的定位,也就是不支持CSS Script。

方法2

同樣的也是利用濾鏡進行處理,但方法上與方法一有所區別,單獨針對IE6進行處理,利用“_”來針對IE6處理,其他浏覽器對PNG的半透明是支持的,所以不再需要處理了。需要注意的是,sizingMethod='crop'須寫上,不然會出現一些莫名的邊角的問題,這個也是與方法一的方法有所區別的一點(有時候不寫也會正常,但保險起見,建議寫)。

二、DD_belatedPNG

  DD_belatedPNG完美地解決了“iepngfix.htc”會出現的無法平鋪,沒法定位以及所加超鏈接的點擊區域無法使用等問題!

  詳細文檔見http://dillerdesign.com/experiment/DD_belatedPNG/。這裡就不提供翻譯了,哪位大大有時間有精力就來個翻譯文檔吧。08年末這東西剛出來的時候國內就有人發過這個方法,但不知道為什麼,沒引起什麼“效應”,很多人還是在用上面說的“更具局限性”的方法。

  使用方法很簡單,首先下載調用JS,然後在使用PNG的頁面中引用代碼,由於是針對IE6處理的,所以在外圍加上IE6的條件注釋,以便區別於其他浏覽器。

 1.<!--[if IE 6]>
<script type="text/javascript" src="下載下來的JS路徑"></script>
<script type="text/javascript">
      DD_belatedPNG.fix('CSS選擇器, 應用類型');
</script>
<![endif]-->

引用函數是 DD_belatedPNG.fix() , 括號裡分別填寫應用PNG圖片透明的CSS選擇器(可使用ID選擇器和類選擇器)和應用類型(分為img和background兩種)支持多個選擇器的使用,支持hove的事件,和CSS的寫法是一樣的,最後兩個是寫應用的類型就可以了,最後完整的應用代碼如下(注意必須是在全英文的狀態下輸入,很多人老是問我是什麼原因不起作用,其實是因為輸入了中文的標點):

  單選擇器和單應用類型:

  1. DD_belatedPNG.fix('#box-one,img')
  2. DD_belatedPNG.fix('.header, background')

  更多選擇器多應用類型:

  1. DD_belatedPNG.fix('#box-one, .header,#footer,.box-two a:hover, img,background');

  另外,為解決IE6下背景圖閃爍,可以定義下html的CSS

html {filter:expression(document.execCommand("BackgroundImageCache",false,true));}

  注:要注意上面選擇器的標點要在英文的狀態下,不然是沒有效果的!

  DD_belatedPNG下載(內含壓縮版和沒壓縮的版本): 點擊進行下載

  IE6下的效果對比如下:
png32半透明在IE6下的效果對比

  我相信,還有更好的兼容方式,希望大家在有更好的方法的時候,可與我一同分享,感謝你的閱讀!

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved