什么是CSS SPRITES?

大家好仔雷,我是IT修真院北京總院第24期的學(xué)員蹂析,一枚正直純潔善良的web程序員

今天給大家分享一下舔示,修真院官網(wǎng)css任務(wù)7,深度思考中的知識(shí)點(diǎn)——什么是CSS SPRITES电抚?


1.背景介紹

在計(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è)的顯示性能。


2.知識(shí)剖析

那這項(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ì)讓你肉疼了。更別說(shuō)對(duì)眾多的手機(jī)用戶了纵装,流量都是錢(qián)吶征讲!

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

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

4.解決方案

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

2.將這些切好的圖片拼接在一起,這里我們可以使用photoshop,但是更好的是很多前輩制作了許多sprites圖生成工具挽唉,也就是俗稱的雪碧圖生成工具滤祖,下面我給大家演示一下。

好了瓶籽,我們做好需要使用的雪碧圖匠童,現(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)單的演示一下巧骚。

1. 假設(shè)合成之后的雪碧圖寬是 W1, 需要顯示的子圖片寬度是 W2, 以子圖為背景的標(biāo)簽寬度是 W3赊颠,background-size的寬度是x

2. 有公式 x/W3 = W1/W2 => x = W1*W3/W2

3. 所以 background-size 的寬度值為 W1*W3/W2

優(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)

1.每次制作雪碧圖都很繁瑣,增大前端和UI的工作量纲菌。

2.雪碧圖制作完成之后挠日,維護(hù)特別困難,每次要加或者換圖片都需要重新制作一整張圖片翰舌。

3.難以實(shí)現(xiàn)自適應(yīng)嚣潜,圖片的大小都限定死了。

4.由于圖片的位置需要固定為某個(gè)絕對(duì)數(shù)值椅贱,這就失去了諸如center之類的靈活性懂算。

前面我們也提到了,必須限制盒子的大小才能使用CSS Sprites庇麦,否則可能會(huì)出現(xiàn)出現(xiàn)干擾圖片的情況计技。這就是說(shuō),在一些需要非單向的平鋪背景和需要網(wǎng)頁(yè)縮放的情況下山橄,CSS Sprites并不合適酸役。解決方式是,加大圖片之間的距離驾胆,這樣可以保持有限度的縮放。

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

sprites

demo

6.擴(kuò)展思考

雪碧圖如何自適應(yīng)

雪碧圖常規(guī)的方案一般會(huì)做幾套不同大小的圖去適應(yīng)不同的設(shè)備尺寸

把整圖整體縮放

...你別用雪碧圖啊 不要死心眼 就是這樣

雪碧圖常用在哪里

apple


亞馬遜


CSS Sprites常用來(lái)合并頻繁使用的圖形元素贱呐,如導(dǎo)航丧诺、LOGO、分割線奄薇、RSS圖標(biāo)驳阎、按鈕等。通常它們不會(huì)作為網(wǎng)頁(yè)內(nèi)容出現(xiàn)馁蒂,因?yàn)樯婕皟?nèi)容的圖片并不是每個(gè)頁(yè)面都一樣呵晚。

7.參考文獻(xiàn)

參考一:Wiki百科 sprites

參考二:雪碧圖如何自適應(yīng)

視頻鏈接? ? 密碼: 5wvx

ppt鏈接


感謝大家觀看

今天的分享就到這里啦,歡迎大家點(diǎn)贊沫屡、轉(zhuǎn)發(fā)饵隙、留言、拍磚~


技能樹(shù).IT修真院

“我們相信人人都可以成為一個(gè)工程師沮脖,現(xiàn)在開(kāi)始金矛,找個(gè)師兄芯急,帶你入門(mén),掌控自己學(xué)習(xí)的節(jié)奏驶俊,學(xué)習(xí)的路上不再迷萌⑺#”。

這里是技能樹(shù).IT修真院饼酿,成千上萬(wàn)的師兄在這里找到了自己的學(xué)習(xí)路線榕酒,學(xué)習(xí)透明化,成長(zhǎng)可見(jiàn)化故俐,師兄1對(duì)1免費(fèi)指導(dǎo)想鹰。快來(lái)與我一起學(xué)習(xí)吧~

我的邀請(qǐng)碼:12361358购披,或者你可以直接點(diǎn)擊此鏈接:http://www.jnshu.com/login/1/12361358

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末杖挣,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子刚陡,更是在濱河造成了極大的恐慌惩妇,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件筐乳,死亡現(xiàn)場(chǎng)離奇詭異歌殃,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)蝙云,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)氓皱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人勃刨,你說(shuō)我怎么就攤上這事波材。” “怎么了身隐?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵廷区,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我贾铝,道長(zhǎng)隙轻,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任垢揩,我火速辦了婚禮玖绿,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘叁巨。我一直安慰自己斑匪,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布俘种。 她就那樣靜靜地躺著秤标,像睡著了一般绝淡。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上苍姜,一...
    開(kāi)封第一講書(shū)人閱讀 49,031評(píng)論 1 285
  • 那天牢酵,我揣著相機(jī)與錄音,去河邊找鬼衙猪。 笑死馍乙,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的垫释。 我是一名探鬼主播丝格,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼棵譬!你這毒婦竟也來(lái)了显蝌?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤订咸,失蹤者是張志新(化名)和其女友劉穎曼尊,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體脏嚷,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡骆撇,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了父叙。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片神郊。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖趾唱,靈堂內(nèi)的尸體忽然破棺而出涌乳,到底是詐尸還是另有隱情,我是刑警寧澤甜癞,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布爷怀,位于F島的核電站,受9級(jí)特大地震影響带欢,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜烤惊,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一乔煞、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧柒室,春花似錦渡贾、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)纺讲。三九已至,卻和暖如春囤屹,著一層夾襖步出監(jiān)牢的瞬間熬甚,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工肋坚, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留乡括,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓智厌,卻偏偏與公主長(zhǎng)得像诲泌,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子铣鹏,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345

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