css sprite原理優缺點及使用示例介紹

2022-09-25 16:24:09 字數 4289 閱讀 6844

css sprites在國內很多人叫css精靈,是一種網頁應用處理方式。它允許你將乙個頁面涉及到的所有零星都包含到一張大圖中去,這樣一來,當訪問該頁面時,載入的就不會像以前那樣一幅一幅地慢慢顯示出來了。對於當前網路流行的速度而言,不高於200kb的單張的所需載入時間基本是差不多的,所以無需 顧忌這個問題。

利用css sprites能很好地減少了網頁的http請求,從而大大的提高了頁面的效能,這也是css sprites最大的優點,也是其被廣泛傳播和應用的主要原因;

css sprites能減少的位元組,曾經比較過多次3張合併成1張的位元組總是小於這3張的位元組總和。

傳統切圖思想進行操作,講究精細,規格越小越好,重量越小越好,其實規格大小無所謂,計算機統一都按byte計算。客戶端每顯示一張都會向伺服器傳送請求,所以,越多請求次數越多,造成延遲的可能性也就越大。因為一張的傳輸時間,通常遠小於請求等待的時間。典型如文字編輯器,小圖示特別多,開啟時一張張跑出來,給使用者的感覺很不好。如果能用一張**決,則不會有這個問題

加速的關鍵,不是降低重量,而是減少個數。傳統切圖講究精細,規格越小越好,重量越小越好,其實規格大小無所謂,計算機統一都按byte計算。客戶端每顯示一張都會向伺服器傳送請求,所以,越多請求次數越多,造成延遲的可能性也就越大。

css sprites原理

css sprites其實就是把網頁中一些背景整合到一張檔案中,再利用css的「background-image」,「background- repeat」,「background-position」的組合進行背景定位,background-position可以用數字能精確的定位出背景的位置。

css sprites優點

利用css sprites能很好地減少了網頁的http請求,從而大大的提高了頁面的效能,這也是css sprites最大的優點,也是其被廣泛傳播和應用的主要原因;

css sprites能減少的位元組,曾經比較過多次3張合併成1張的位元組總是小於這3張的位元組總和。

css sprites缺點

誠然css sprites是如此的強大,但是也存在一些不可忽視的缺點

在合併的時候,你要把多張有序的合理的合併成一張,還要留好足夠的空間,防止板塊內不會出現不必要的背景;這些還好,最痛苦的是在寬屏,高解析度的螢幕下的自適應頁面,你的如果不夠寬,很容易出現背景斷裂;

css sprites在開發的時候比較麻煩,你要通過photoshop或其他工具測量計算每乙個背景單元的精確位置,這是針線活,沒什麼難度,但是很繁瑣;幸好騰訊的鬼哥用ria開發了乙個css sprites 樣式生成工具,雖然還有一些使用上的不靈活,但是已經比photoshop測量來的方便多了,而且樣式直接生成,複製,拷貝就ok!

css sprites在維護的時候比較麻煩,如果頁面背景有少許改動,一般就要改這張合併的,無需改的地方最好不要動,這樣避免改動更多的css,如果在原來的地方放不下,又只能(最好)往下加,這樣的位元組就增加了,還要改動css。

css sprites非常值得學習和應用,特別是頁面有一堆ico(圖示)。總之很多時候大家要權衡一下利弊,再決定是不是應用css sprites。

css sprite的使用

有幾篇關於css sprites的文章,基本上把其原理和機制說明得很清楚。

what are css sprites?

how to create css sprites

creating rollover effects with css sprites

building a dynamic banner with cwww.cppcns.comss sprites

high performance web sites中關於css sprites的內容3.2. css sprites

css sprite的例子

1. 限制(image slicing)[1]

典型如文字編輯器,小圖示特別多,開啟時一張張跑出來,給使用者的感覺很不好。如果能用一張**決,則不會有這個問題,比如百度空間、163部落格、gmail都是這麼做的。

image slicing』s kiss of death

2. 單圖轉滾(single-image rollovers)[1]

觸發切換的需求,傳統方案得重新請求新,因為網路問題經常造成停留或等待。如果能把多種狀態合併成一張圖,就能完美解決,然後再使用背景圖技術模擬動態效果。

colorscheme ratings

3. 延長背景(extend background image)[1]

如果的某邊可以背景平鋪無限延長,則不需要每個角、每條邊單獨搞出來,能少乙個就少乙個。其實,這個理論還可以擴充套件到四角容器裡,好處是能大大簡化html structure。

extend background image

綜合案例

google korea(1和2技巧)

css menus(2和3技巧)

css sprites的問題

由於ie6存在的background的flicker問題ie6/win, background image on , cache=『check every visit』: flicker!,有人針對此問題提出了解決方案fast rollovers without preload

關於ie6的flicker問題,fivesevensix.com上有一篇很不錯的研究文章minimize flickering css background images in ie6

另外:brunildo.org的css tests and experiments是關於css各種功能程式設計客棧不錯的參考手冊和測試工具。

優化1. 對於非動畫的gif更建議使用png8因為它同樣能做到一樣的效果,而且能為你節省10%-30%的檔案體積。

2. photoshop相比起fireworks,匯出同等質量的png,體積會稍大。而fireworks雖然做了相應壓縮優化,但沒有達到最優秀的壓縮。

3. 我所知的設計軟體,對於png的處理都沒做到最優秀的壓縮,體積還有一定的壓縮空間。可以嘗試使用下面介紹的」影象優化工具」 做無失真的壓縮優化。

4. 體積及尺寸方面,建議體積保持在100k以內(較為符合國情最佳請求size),size為800px(最佳尺寸)。(從某權威人事中得知,具體無從考證)

css sprites切割術

1. css sprites順序合由上至下、左至右新增。而background-position一般採用數字組合形式定位,這樣能減少維護帶來的不必要麻煩。

2. 不建議css sprites中保持一定的間距,因為檔案size增大而增加檔案體積。

3. css sprites中把顏色較近或相同的組合在一起可以降低顏色數,因為少色數的檔案體積會相對的小。

4. size相同的css sprites中留有較大空隙,某程度上多數情況會增大了體積,所以css sprites的不要有空隙。

5. 在size相同的css sprites中,垂直排列的會比水平排列的檔案體積要大。

6. 在css sprites中,水平排列的會比垂直排列的檔案體積要大。

7. 對等合併:應用css sprites時,適當地把對gqhoyzhdu等相同的影象合併,以節省空間及減少體積。

8. 區分開不需要合併的影象:如當前使用者確定只顯示一種狀態或乙個級別時,不必要把其他的級別或狀態的合併。

9. **切割位:在css sprites的最右或左邊為最靈活動位置最適宜擺放文字前的icon,因此不會受到其它css sprites干預,也不需要預留一定的行寬。

補兩條10. 有的說定位時避免使用bottom或right等,當使用css sprite的時候,只用background-position: bottom -300px或background-position: right -200px;非常容易。這剛開始的時候是可行的,但是問題是,當你在寬度上或高度上擴充套件相關sprite的時候,原先設定的位置可能是錯的,因為那個已經不再sprite的底部或右部了。使用確切的位置來避免這個問題。

其實我感覺一般情況寬度圖不片不會改應變,用right和 left還是挺方便的,但從整體考慮,公升級了。改版的程式設計客棧。寬度還是有可能會改變的。必竟開始時做太寬也沒什麼好處,還是浪費很多空間。就是多費點時間去對座標,最好還是不用right 和 leift的了。

11.有的說竟給每個足夠的空間就像你在本文頂部的例項看到的那樣,那些小都被預留了足夠的空間。為什麼不把他們塞到一塊來讓sprite更小呢? 因為使用這些的元素通常都會有大量的內容而且可能會需要擴www.cppcns.com展的間距,以至於其它不會意外出現。

這個我支援,必竟多空點,也佔不不了多大空間,如何要追求完美,那就慢慢調吧。費了勁了。在加上瀏覽器相容問題,最好還大多空間。小誤差也忽略了。

本文標題: css sprite原理優缺點及使用示例介紹

本文位址:

css sprite原理優缺點及使用

css sprites在國內很多人叫css精靈,是一種網頁應用處理方式。它允許你將乙個頁面涉及到的所有零星都包含到一張大圖中去,這樣一來,當訪問該頁面時,載入的就不會像以前那樣一幅一幅地慢慢顯示出來了。對於當前網路流行的速度而言,不高於200kb的單張的所需載入時間基本是差不多的,所以無需 顧忌這個...

CDN的原理及優缺點

cdn的全稱是content delivery network,即內容分發網路。其目的是通過在現有的internet中增加一層新的cache 快取 層,將 的內容發布到最接近使用者的網路 邊緣 的節點,使使用者可以就近取得所需的內容,提高使用者訪問 的響應速度。從技術上全面解決由於網路頻寬小 使用者...

POW共識機制原理及優缺點

pow工作量證明 英文全稱為proof of work 在位元幣之前就已經出現,中本聰在設計區塊鏈的共識機制的時候就是借鑑了pow工作量證明。常見的是利用hash運算的複雜度進行cpu運算實現工作量確定。工作量證明 proof of work,pow 是一種對應服務與資源濫用 或是阻斷服務攻擊的經濟...