CSS Sprites

背景介紹

在計(jì)算機(jī)圖形學(xué)中船万,sprites指的是包含于場(chǎng)景中的二維圖像或者動(dòng)畫(huà)刻撒。最開(kāi)始這項(xiàng)技術(shù)是應(yīng)用于街機(jī)游戲中,里面的人物和可移動(dòng)物品大多數(shù)都是應(yīng)用了sprites耿导,為啥要叫sprites(精靈)呢声怔?

精靈并不是幀緩沖中位圖數(shù)據(jù)的一部分,而是“懸浮”于幀緩沖中的數(shù)據(jù)之上舱呻,沒(méi)有對(duì)其中的數(shù)據(jù)產(chǎn)生影響醋火,就像幽靈和精靈一樣。

CSS精靈也差不多是這個(gè)意思箱吕,可以將原本需要多張圖像文件分別顯示芥驳,整并為單一圖像文件的分區(qū)顯示技術(shù),借由減少下載圖像文件數(shù)量殖氏,提高網(wǎng)頁(yè)的顯示性能晚树。

那這項(xiàng)技術(shù)為啥能減少http請(qǐng)求呢?講到這里就要提一下雅采,瀏覽器在加載網(wǎng)頁(yè)的時(shí)候圖片文件及外部的JS爵憎、CSS文件都需要單獨(dú)下載,JS是堵塞HTML下載進(jìn)程的婚瓜,圖片是另外開(kāi)啟進(jìn)程來(lái)下載的宝鼓,不同的瀏覽器會(huì)有不同的同時(shí)下載圖片的數(shù)量的限制或者一個(gè)或者五個(gè)或者十個(gè),反正是有限制的巴刻,所以如果一個(gè)遍布了圖片的網(wǎng)頁(yè)愚铡,或者一系列網(wǎng)頁(yè),即使你網(wǎng)速再快也要分批次的下載這些圖片胡陪。

而且每個(gè)圖片的下載都是一次完整的HTTP請(qǐng)求-響應(yīng)沥寥。而把很多小圖片集中到一張圖片上這樣在只需要一個(gè)HTTP請(qǐng)求-響應(yīng),在現(xiàn)在網(wǎng)速條件下不超過(guò)200k的圖片下載速度是差不多的柠座,下載一次之后無(wú)論是該頁(yè)面還是站點(diǎn)其它頁(yè)面使用包含在這張大圖上的圖片的時(shí)候就可以使用緩存邑雅,不會(huì)帶來(lái)反復(fù)下載的開(kāi)銷,所以只有一個(gè)HTTP請(qǐng)求-響應(yīng)妈经。

所以使用CSS sprites最大的好處就是減少HTTP請(qǐng)求淮野,加快網(wǎng)站響應(yīng)速度捧书,提高網(wǎng)站性能。有同學(xué)可能會(huì)問(wèn)了骤星,多幾個(gè)HTTP請(qǐng)求真的會(huì)那么嚴(yán)重嗎经瓷?如果使用一張大圖,那么很可能大圖中有幾個(gè)圖片用不到洞难,這不是多加載內(nèi)容了嗎舆吮,和多幾次HTTP請(qǐng)求開(kāi)銷差距有那么大嗎?

還有一個(gè)好處廊营,這樣不但快了歪泳,還省流量了,因?yàn)镠TTP請(qǐng)求-響應(yīng)會(huì)在客戶端和服務(wù)器端交互HTTP報(bào)文露筒,所以下載一個(gè)圖片所用流量不只是圖片大小,每個(gè)HTTP報(bào)文會(huì)占用網(wǎng)絡(luò)流量的敌卓。也許有同學(xué)會(huì)問(wèn)慎式,誰(shuí)會(huì)在乎那點(diǎn)而流量,你別說(shuō)還真有人在乎趟径,如果你不是自己機(jī)房瘪吏,而是把服務(wù)器放在別人機(jī)房就知道流量也是很貴的,如果你的網(wǎng)站每天被訪問(wèn)數(shù)十億次蜗巧,這點(diǎn)兒流量就會(huì)讓你肉疼了掌眠,不知道大家看過(guò)Google首頁(yè)P(yáng)age Source沒(méi)有,截取一部分幕屹,可以發(fā)現(xiàn)蓝丙,人家連HTML的換行符、縮進(jìn)望拖、空格都給省了渺尘,你說(shuō)圖的是可讀性嗎。

更別說(shuō)對(duì)眾多的手機(jī)用戶了说敏,流量都是錢(qián)吶鸥跟!

知識(shí)剖析

一,如何實(shí)現(xiàn)CSS sprites

1.我們需要找到需要使用的小圖標(biāo)盔沫,然后對(duì)圖標(biāo)進(jìn)行切圖医咨,切出來(lái)我們需要的圖片或者圖標(biāo)。

2.將這些切好的圖片拼接在一起,這里我們可以使用photoshop架诞,但是更好的是很多前輩制作了許多sprites圖生成工具拟淮,也就是俗稱的雪碧圖生成工具,具體的步驟可以看下面的視頻侈贷。

二惩歉,應(yīng)用到網(wǎng)頁(yè)

好了等脂,我們做好需要使用的雪碧圖,現(xiàn)在需要將這個(gè)圖應(yīng)用到我們的網(wǎng)頁(yè)中撑蚌,利用CSS的“background-image”上遥,“background- repeat”,“background-position”的組合進(jìn)行背景定位争涌,background-position可以用數(shù)字精確的定位出背景圖片的位置粉楚。根據(jù)雪碧圖中圖標(biāo)的具體像素大小,再規(guī)定元素的具體大小亮垫,然后使用background-position找到圖標(biāo)的位置模软。元素大小相當(dāng)于相機(jī)機(jī)頭,background-position相當(dāng)于移動(dòng)相機(jī)找到我們需要的景物饮潦,下面給大家簡(jiǎn)單的演示一下燃异。

三,css sprites的優(yōu)缺點(diǎn)

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

上面也提到了继蜡,通過(guò)減少下載圖片的數(shù)量以減少http請(qǐng)求數(shù)量回俐,減少http報(bào)文,節(jié)省流量稀并,增加訪問(wèn)速度仅颇,提高網(wǎng)頁(yè)的性能。這是它最大的優(yōu)點(diǎn)碘举。

缺點(diǎn)

每次制作雪碧圖都很繁瑣忘瓦,增大前端和UI的工作量。

雪碧圖制作完成之后引颈,維護(hù)特別困難耕皮,每次要加或者換圖片都需要重新制作一整張圖片。

難以實(shí)現(xiàn)自適應(yīng)线欲,圖片的大小都限定死了明场。

綜合考慮,一切為了性能李丰,這些缺點(diǎn)只能忍受了苦锨,但是大家做雪碧圖之前也要考慮清楚,哪些圖片不適合使用雪碧圖趴泌,綜合考慮舟舒,合理使用。

3.常見(jiàn)問(wèn)題

雪碧圖如何自適應(yīng)呢嗜憔?

4.解決方案

這是個(gè)坑秃励。。吉捶。夺鲜。需要自適應(yīng)的圖片就不要使用雪碧圖了嘛皆尔!

5.編碼實(shí)戰(zhàn)

用CSS sprites寫(xiě)一副撲克牌,具體習(xí)題在這個(gè)鏈接里面币励,這個(gè)蠻有趣的慷蠕,大家有興趣可以嘗試下,可以更加熟悉CSS sprites的使用食呻。

http://www.cnblogs.com/scgw/archive/2011/03/19/1988908.html

6.參考文獻(xiàn)

Wiki百科 sprites

簡(jiǎn)單實(shí)例讓你快速掌握css sprites精髓

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末流炕,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子仅胞,更是在濱河造成了極大的恐慌每辟,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件干旧,死亡現(xiàn)場(chǎng)離奇詭異渠欺,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)莱革,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)峻堰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人盅视,你說(shuō)我怎么就攤上這事〉┩颍” “怎么了闹击?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)成艘。 經(jīng)常有香客問(wèn)我赏半,道長(zhǎng),這世上最難降的妖魔是什么淆两? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任断箫,我火速辦了婚禮,結(jié)果婚禮上秋冰,老公的妹妹穿的比我還像新娘仲义。我一直安慰自己,他們只是感情好剑勾,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布埃撵。 她就那樣靜靜地躺著,像睡著了一般虽另。 火紅的嫁衣襯著肌膚如雪暂刘。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,125評(píng)論 1 297
  • 那天捂刺,我揣著相機(jī)與錄音谣拣,去河邊找鬼募寨。 笑死,一個(gè)胖子當(dāng)著我的面吹牛森缠,可吹牛的內(nèi)容都是我干的拔鹰。 我是一名探鬼主播,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼辅鲸,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼格郁!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起独悴,我...
    開(kāi)封第一講書(shū)人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤例书,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后刻炒,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體决采,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年坟奥,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了树瞭。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡爱谁,死狀恐怖晒喷,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情访敌,我是刑警寧澤凉敲,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站寺旺,受9級(jí)特大地震影響爷抓,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜阻塑,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一蓝撇、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧陈莽,春花似錦渤昌、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至朱盐,卻和暖如春群嗤,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背兵琳。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來(lái)泰國(guó)打工狂秘, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留骇径,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓者春,卻偏偏與公主長(zhǎng)得像破衔,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子钱烟,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • 大家好拴袭,我是IT修真院北京總院第24期的學(xué)員读第,一枚正直純潔善良的web程序員 今天給大家分享一下,修真院官網(wǎng)css...
    我是一只北極熊啊閱讀 2,039評(píng)論 0 2
  • 2.CSS Sprite(CSS 精靈), 也稱作 雪碧圖拥刻;如華為官網(wǎng)右側(cè)提示欄: 圖標(biāo)字體是個(gè)比較大的技術(shù)討論點(diǎn)...
    蕭強(qiáng)閱讀 7,703評(píng)論 1 16
  • 需求般哼? 加速的關(guān)鍵吴汪,不是降低質(zhì)量,而是減少個(gè)數(shù)蒸眠。傳統(tǒng)切圖講究精細(xì)漾橙,圖片規(guī)格越小越好,重量越小越好楞卡,其實(shí)規(guī)格大小無(wú)所...
    范小飯_閱讀 674評(píng)論 6 12
  • 這段日子火車(chē)站的阿姨和霞兒臀晃,配合的相當(dāng)好,每天賺的不只是一塊錢(qián)介劫。很多人會(huì)以為她們是母女倆徽惋,所以都會(huì)買(mǎi)她們的玉米。很...
    酥小栗閱讀 212評(píng)論 0 3
  • 期待了很久的暑假親子游今天正式開(kāi)始座韵,晚上爸爸就說(shuō)明天要休整一天才玩险绘。對(duì)于小屁股來(lái)說(shuō),有家人誉碴,有玩伴宦棺,就夠了。 ...
    8cc5b1baeacb閱讀 659評(píng)論 2 2