圖片透明,鋸齒問題是重構人員很頭疼的問題,每當遇到這樣的問題都讓我感覺到不知道從哪入手,雖然能解決這些問題,但是總感覺多少有點缺點,最近遇到這方面的問題,總結了幾種實現一些透明小圖標的鋸齒問題:png8格式的透明背景圖片,會讓浏覽器在先顯示的過程中圖片邊緣會有一些鋸齒情況,png24可以解決這些鋸齒問題,但是ie6不支持png24透明,不過利用ie6的hack問題有兩種解決的辦法:
代碼如下:
<div class="pwdTipsBg"></div>
<div class="pwdTips">
<span class="closeBtn"></span>
<i class="pwdTipsIcon"></i>
驗證碼錯誤,請填寫最新獲取的驗證碼!
</div>
1. 利用ie6的hack問題,用兩種格式的圖片來表示;一種其他浏覽器用png24格式的圖片顯示,ie6用png8格式的顯示,
代碼如下:
.pwdTipsBg{ height:100%;background:#000; opacity:0.5; position: absolute; left:0; top:0;z-index:1001;
filter: alpha(opacity=50);width:100%; zoom:1;}
.pwdTips{ position:absolute; left:40%;top:40%; z-index:1009; width:285px; background:#ececec; height:55px; padding:45px 20px 10px 80px;}
.pwdTips i{ position:absolute; left:40px; top:40px; background-position:-152px -68px; width:26px; height:26px;}
.pwdTips span{ position:absolute; top:-10px; right:-15px; width:33px; height:33px; background:url(closebtn.png) no-repeat 0 0; _background:url(scsprites.png) no-repeat -119px -63px; cursor:pointer; display:block;}
2. 利用filter濾鏡解決圖片問題
代碼如下:
.pwdTips span{ position:absolute; top:-10px; right:-15px; width:33px; height:33px; background:url(closebtn.png) no-repeat 0 0; _background:none;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src="css/safecenter/closebtn.png"); cursor:pointer; display:block;}
1、書寫正常的CSS代碼,通過background導入圖片,這樣所有的浏覽器均使用了此PNG圖片;
代碼如下:
background:url(closebtn.png) no-repeat 0 0;
2、通過濾鏡對引入圖片,濾鏡引入圖片的時候是相對於HTML文件,而不是相對於CSS文件,語法如下:
代碼如下:
filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src="css/safecenter/closebtn.png");
代碼寫到這裡,我們放到IE6下測試後發現IE6還是沒有透明,因為我們雖然設置了濾鏡引入圖片,但是background也同樣加載了此圖片,又因為background的圖層比濾鏡設置的高,所以才沒有顯示出來,
所以最終的代碼設置為:
代碼如下:
pwdTips span{ position:absolute; top:-10px; right:-15px; width:33px; height:33px; background:url(closebtn.png) no-repeat 0 0; _background:none;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src="css/safecenter/closebtn.png"); cursor:pointer; display:block;}
優點:
1、綠色無插件;
2、效率高,速度快;
3、網速慢的時候,不會出現先灰底再透明的情況,支持遠程圖片;
4、支持Hover等偽類,但是得使用兩張圖片,網速慢的情況下,會導致第二張圖片暫時無法顯示,因為還沒有完全載入;
缺點:
1、不支持平鋪,雖然filter有sizingMethod="scale", 拉伸縮放模式,但是圖片會變形,如果單純的顏色或簡單的漸變色還能橫向平鋪;
2、不支持Img標簽;
3、不支持CSS Sprite;