讓ie6對png透明圖片支援起來,ie6png圖片

來源:互聯網
上載者:User

讓ie6對png透明圖片支援起來,ie6png圖片

一個老生常談的問題就是ie6不支援透明png圖片啊。但其實ie6隻是不支援png-24格式的透明背景圖片,但對透明背景的png-8圖片還是支援的,只是png-8圖片只有256色,放到任意瀏覽器都會呈現白色的鋸齒。

當代碼這樣時:

<style type="text/css">    .gif{        width: 400px;        height:200px;        background:#f00 url(png8.png) no-repeat;     } </style><div class="gif"></div>

 

div中的背景圖片是的透明背景png-8圖片:

瀏覽器開啟的效果如下(chrome,firefox,ie6+都是這麼個效果):

 

 

看到這些泛白的鋸齒要哭瞎了,怎麼去除這噁心的鋸齒呢,ps儲存png-8圖片時,有多個選項,經測試通過勾選“擴散透明度仿色”時鋸齒的能達到最小,

 

如所示,鋸齒此時沒那麼噁心:

但是遠遠不夠啊,這個視覺效果還是太差了。上網查詢下,這是由於png-8白色雜邊導致的問題,可以在儲存圖片前將雜邊的顏色設定成和背景一致來解決。

在ie6下的效果如下,其他瀏覽器顯示效果也一致:

 

此時ie6下png-8透明背景圖片能正常顯示了,且不只是針對ie6,對其他瀏覽器也是用,好像很好用,但是png-8隻有256色啊,色彩不豐富,而現在廣泛使用的png-24有2^24=1678萬色,能展示很豐富的色彩,而且沒有鋸齒。所以如果原圖色彩很豐富,那麼只能轉換為png-8圖片作為降級的方法用到ie6上。還有個問題是,雜邊處理的前提是圖片覆蓋地區的背景色是單色,如果是多種顏色,那麼總會出現鋸齒了。

 

我們需要尋找更靈活的方法,ie有專用的AlphaImageLoader過濾器,可以讓ie6支援png-24的透明背景,而不是將透明色顯示為灰色,這裡要用到ie hack技巧,將background-image設定為none去掉背景圖片,在使用濾鏡載入圖片。AlphaImageLoader過濾器中的參數src指向要顯示的png-24圖片,sizingMethod有3個可選值:crop:直接放置到容器中,圖片左上方對齊容器左上方,image:讓容器的邊緣調整至包住整個圖片,scale:讓圖片調整至充滿整個容器。

      .gif{        width: 400px;        height:200px;        background: #f00 url(ie6.png) no-repeat;        *background-image:none;        filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='png_24.png',sizingMethod=crop);      }

 

效果妥妥的:

 

不過需要注意的是瀏覽器會有提示,需要使用者點擊允許才能運行濾鏡效果,否則不僅沒有濾鏡效果,而且由於取消了背景圖片,圖片壓根就看不到(只看到紅色,字是見不到的,圖略):

如果覺得一個個圖片添加濾鏡效果麻煩,還可以用js寫個函數一次性將頁面所有png圖片抓出來添加ie濾鏡效果。不過使用者喜歡禁掉js指令碼的話,就呵呵了。  還有一種方法是利用ie專有的css擴充--行為,引用.htc檔案來修複png透明背景問題(也有使用.htc檔案來解決圓角框的):

div{   behavior:url(iepngfix.htc);}

 

這裡有個介紹這種技術的網站:http://www.twinhelix.com/css/iepngfix/,也可以直接下載demo檔案,詳細使用流程在demo頁面有引導:www.twinhelix.com/css/iepngfix/iepngfix.zip。未引用htc檔案,可以看到背景灰藍色:   引用htc檔案後,透明背景正常顯示了(需要點擊允許運行封鎖的內容才能正常顯示):   讓ie6支援透明背景的png的方法就總結到這裡。既然是相容,就不可能百分百完美,具體用什麼技術去完成網頁的開發還是要思量下再做決定。雖然開發人員總是吐槽相容舊版本瀏覽器很噁心,但是舊版本瀏覽器曾經也作出過巨大貢獻。

ie6雖已是耄耋之年,但由於xp使用者還是挺多的,而且一般家庭不換電腦的話就不會去升級瀏覽器,所以ie6退出曆史舞台還需花費一些時日。在ie6剩餘不多的生命時光,我們需要做的就是修好各種bug,靜靜等待ie6掛掉。

 

補充:

評論區有人說連ie8都不去相容了,我不想多說,拿資料說話,截取自百度對瀏覽器市場份額統計。過去的3個月ie8使用者佔了21.62%,ie7使用者佔5.12%,ie6使用者佔3.85%,我想你作為開發人員,不相容ie低版本,難道是你的網站不對30%的使用者開放?不相容ie6,你的網站每100人中就有4人給差評。當然這個統計基於一般情況,如果知道訪問自己網站的特定使用者群都使用chrome或firxfox瀏覽器,那當然可以不去相容ie低版本。js架構基本拋棄低版本,這個是事實,因為js架構大部分都是外國人寫的!而外國人基本用chrome瀏覽器,這不符合國情,國內依然有很多人在用低版本的ie瀏覽器,甚至都懶得去升級。我始終覺得,不去相容多方瀏覽器的不是好開發人員,因為相容各方瀏覽器是每個開發人員的分內事,而你永遠無法要求使用者使用和你一樣的瀏覽器。

-------------------------------轉載註明出處^_^:  http://www.cnblogs.com/suspiderweb/

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.