CSS Sprite (雪碧圖)

CSS Sprite技術(shù)被國內(nèi)一些人稱為CSS雪碧圖,其實(shí)就是把網(wǎng)頁中一些背景圖片整合到一張圖片文件中,再利用CSS的“background-image”,“background- repeat”,“background-position”的組合進(jìn)行背景定位訪問圖標(biāo)。

我曾經(jīng)用過的一張雪碧圖:
拼合后
圖標(biāo)引用方式
CSS控制

很多網(wǎng)站喜歡運(yùn)用雪碧圖,訪問量大的網(wǎng)站尤是如此。為什么呢? 分開管理不是更加靈活嗎?大家都這么做當(dāng)然有它的優(yōu)點(diǎn), 但同樣存在缺點(diǎn)。

【優(yōu)點(diǎn)】

(1) 1 + 1 < 2

圖標(biāo)放在一起, 可以令圖標(biāo)的總?cè)萘可孕∫稽c(diǎn). 這不是最重要的, 但我可以告訴你, 很多程序員都是完美主義者.

(2)讓連接次數(shù)大量減少

用過 Opera 的朋友可能會對它那個(gè)顯示圖片下載的進(jìn)度條印象很深, 它會顯示 “已下載圖片/圖片總數(shù)”. 對于 Web 服務(wù)器上的每個(gè)獨(dú)立資源, 都需要去連接和獲取的. 所以大家都設(shè)法將很多圖標(biāo)放在一個(gè)圖片上, 連接一次就全部取回來. 這也許是一圖多標(biāo)的主要目的.

(3) 讓瀏覽器將圖標(biāo)預(yù)先下載

瀏覽器為了盡快地顯示頁面, 一般只是將打開頁面時(shí)用到的圖片下載到本地, 而一些可能用到, 但沒有立刻被用到的圖片需要在應(yīng)用的時(shí)候再進(jìn)行下載. 最經(jīng)典的例子可能是導(dǎo)航菜單的 Tab 圖標(biāo), 如果普通狀態(tài)的 Tab 圖標(biāo)和鼠標(biāo)懸停時(shí)的圖標(biāo)都是獨(dú)立放置的, 那么當(dāng)你鼠標(biāo)移動到 Tab 按鈕時(shí), 圖標(biāo)才開始下載, 這樣會帶給用戶很不好的視覺效果. 所以我覺得遇到這種情況時(shí), 將多個(gè)圖標(biāo)合并在一起的處理是必須的.

【缺點(diǎn)】

(1)圖片難以管理, 難以定位

如果你要更換一個(gè)圖標(biāo), 那么你需要編輯整個(gè)大圖片. 如果你要改變一個(gè)圖標(biāo)的大小, 很可能你需要重新計(jì)算它的位置, 甚至無從下手, 只能在別的位置再添加一個(gè)圖標(biāo).

(2) 2 > 1

兩個(gè)圖標(biāo)合成的圖片是肯定比其中一個(gè)圖標(biāo)獨(dú)占的圖片大的, 也就是說, 下載這個(gè)圖片所需的時(shí)間將比單獨(dú)一個(gè)圖標(biāo)用的時(shí)間長. 瀏覽器顯示圖片一般都是下載完則顯示或者邊下載邊顯示的, 如果你那幾個(gè)圖標(biāo)組成的圖片容量比較大, 那么它們不能逐個(gè)顯示予用戶, 會造成很不好的用戶體驗(yàn).

【實(shí)現(xiàn)方式】

(1)PS手動拼圖
適合小網(wǎng)站,圖標(biāo)不是很多的時(shí)候使用。

(2)使用sprite工具自動生成
CssGaga:一款自動化網(wǎng)頁設(shè)計(jì)工具集合軟件(該軟件只能在Windows環(huán)境下運(yùn)行)。
利用它能快速生成雪碧圖及對應(yīng)的background-position代碼,還能進(jìn)行css格式化,將css進(jìn)行壓縮,去掉多余的空格、換行、注釋,并且進(jìn)行兼容性的優(yōu)化。

CssGaga
說明

可以訪問ytzong的博客99css學(xué)習(xí)CssGaga的使用方法。

【使用注意事項(xiàng)】

(1)讓圖標(biāo)盡量排列得有規(guī)律

有規(guī)律地排放的圖標(biāo)跟容易定位和維護(hù), 這里的間隔可以使用 16, 32, 48, 96 等標(biāo)準(zhǔn)尺寸。

(2) 將背景顏色一致的圖標(biāo)放置在一起

如果背景顏色不一樣, 最好分為兩個(gè)或多個(gè)圖片放置, 特別是背景顏色相近的, 很容易混淆。

(3) 將相同欄目的圖標(biāo)放置在一起

這樣可以少寫一些 CSS 代碼. 設(shè)置一個(gè) background, 再在每個(gè)項(xiàng)設(shè)置 background-position 就行了。

(4)不要將大圖綁在一塊

大圖綁在一塊影響頁面加載速度,大部分用戶都不會耐心地等待頁面的所以文件被下載完畢再進(jìn)行閱讀。

示例:
雪碧圖
DOM
對應(yīng)CSS
效果
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 雪碧圖的使用場景: 1,靜態(tài)圖片,不隨用戶信息的變化而變化 ...
    哈哈騰飛閱讀 975評論 0 3
  • What's CSS Sprite CSS Sprite是網(wǎng)頁處理圖片的一種方式。它允許你將網(wǎng)頁中會使用到各種零星...
    居客俠閱讀 628評論 0 0
  • 參考視頻地址:CSS Sprite雪碧圖應(yīng)用-慕課網(wǎng) GitHub:https://github.com/BadW...
    waka閱讀 424評論 0 1
  • 雪碧圖的使用場景: 不推薦使用雪碧圖的地方: css Sprite(雪碧圖)的實(shí)現(xiàn)原理: 雪碧圖的實(shí)現(xiàn)方式: 作者...
    LaBaby_閱讀 764評論 0 0
  • 葉子是自然隨處可見的風(fēng)景,無論塞北江南,甚至荒漠,它都有自己獨(dú)一無二的紋理。聆聽自然,我選擇聽葉的聲音。 葉芽初綻...
    弗如無閱讀 1,118評論 2 4

友情鏈接更多精彩內(nèi)容