CSS Sprites簡(jiǎn)介以及優(yōu)缺點(diǎn)
CSS Sprites簡(jiǎn)介
通常被意譯為“CSS圖像拼合”或“CSS貼圖定位”。CSS Sprites并不是一門新技術(shù),目前它已經(jīng)在網(wǎng)頁(yè)開(kāi)發(fā)中發(fā)展得較為成熟,阿里巴巴各子公司的網(wǎng)頁(yè)中到處都可發(fā)現(xiàn)css sprites 的影子。但CSS Sprites并不是什么金科玉律,但在很多情況下,它有著一定的優(yōu)勢(shì),最重要的是它可以減輕服務(wù)器的負(fù)載,提高網(wǎng)頁(yè)加載速度。隨著Web設(shè)計(jì)向著精致、巧妙的方向發(fā)展,設(shè)計(jì)師們開(kāi)始考慮使用非Javascript的方 式制作鼠標(biāo)滑過(guò)、懸停菜單的效果,這時(shí)CSS Sprite應(yīng)運(yùn)而生。
說(shuō)白了,CSS Sprites其實(shí)就是把網(wǎng)頁(yè)中一些背景圖片整合到一張圖片文件中,再利用CSS的“background-image”,“background- repeat”,“background-position”的組合進(jìn)行背景定位,background-position可以用數(shù)字能精確的定位出背景圖片的位置。
當(dāng)頁(yè)面加載時(shí),不是加載每個(gè)單獨(dú)圖片,而是一次加載整個(gè)組合圖片。這是一個(gè)了不起的改進(jìn),它大大減少了HTTP請(qǐng)求的次數(shù),減輕服務(wù)器壓力,同時(shí)縮短了懸停加載圖片所需要的時(shí)間延遲,使效果更流暢,不會(huì)停頓。
CSS Sprites應(yīng)用
在這方面,淘寶網(wǎng)做的比較好,我就以淘寶網(wǎng)為例吧。
實(shí)例一:淘寶頻道頁(yè)面導(dǎo)航
效果圖:
![]()
點(diǎn)擊放大
sprites圖:



實(shí)例二:淘寶首頁(yè)
效果圖:

點(diǎn)擊放大
sprites圖:

CSS Sprites優(yōu)點(diǎn)
CSS Sprites為什么突然跑火,跟能夠提升網(wǎng)站性能有關(guān)。顯而易見(jiàn),這是它的巨大優(yōu)點(diǎn)之一。
- 利用CSS Sprites能很好地減少了網(wǎng)頁(yè)的http請(qǐng)求,從而大大的提高了頁(yè)面的性能,這是CSS Sprites最大的優(yōu)點(diǎn),也是其被廣泛傳播和應(yīng)用的主要原因;
- 個(gè)人認(rèn)為CSS Sprites能減少圖片的字節(jié),我曾經(jīng)比較過(guò)多次3張圖片合并成1張圖片的字節(jié)總是小于這3張圖片的字節(jié)總和。
CSS Sprites缺點(diǎn)
誠(chéng)然CSS Sprites是如此的強(qiáng)大,但是也存在一些不可忽視的缺點(diǎn)。
- 在圖片合并的時(shí)候,你要把多張圖片有序的合理的合并成一張圖片,還要留好只夠的空間,防止板塊內(nèi)不會(huì)出現(xiàn)不必要的背景,否則可能會(huì)出現(xiàn)出現(xiàn)干擾圖片的情況;這些還好,做痛苦的是在寬屏,高分辨率的屏幕下的自適應(yīng)頁(yè)面,你的圖片如果不夠?qū)?,很容易出現(xiàn)背景斷裂;
- CSS Sprites在開(kāi)發(fā)的時(shí)候比較麻煩,你要通過(guò)photoshop或其他工具測(cè)量計(jì)算每一個(gè)背景單元的精確位置,這是針線活,沒(méi)什么難度,但是很繁瑣;不過(guò)網(wǎng)上已經(jīng)有高手開(kāi)發(fā)出“CSS Sprites 樣式生成工具”,大家可以嘗試一下。
- CSS Sprites在維護(hù)的時(shí)候比較麻煩,sprites是一般雙刃劍,如果頁(yè)面背景有少許改動(dòng),一般就要改這張合并的圖片,無(wú)需改的地方最好不要?jiǎng)?,這樣避免改動(dòng)更多的css,如果在原來(lái)的地方放不下,有只能(最好)往下加圖片,這樣圖片的字節(jié)就增加了,因?yàn)槊看蔚膱D片改動(dòng)都得往這個(gè)圖片刪除或添加內(nèi)容,顯得稍微繁瑣,而且重新算圖片的位置(尤其是這種上千px的圖)也是一件頗為不爽的事情。當(dāng)然,在性能的口號(hào)下,這些都是可以克服的。
- 由于圖片的位置需要固定為某個(gè)絕對(duì)數(shù)值,這就失去了諸如center之類的靈活性。
CSS Sprites總結(jié)
性能壓倒一切。CSS Sprites非常值得學(xué)習(xí)和應(yīng)用,特別是頁(yè)面有一堆ico(圖標(biāo))??傊芏鄷r(shí)候大家要權(quán)衡一下利弊,在決定是不是應(yīng)用CSS Sprites。為保持兼容性和維護(hù)性,sprites圖片中的各個(gè)部分保持一定的距離是一種不錯(cuò)的做法。
相關(guān)文章
通過(guò)CSS3的object-fit來(lái)調(diào)整圖片適配尺寸的技巧簡(jiǎn)介
這篇文章主要介紹了通過(guò)CSS3的object-fit來(lái)調(diào)整圖片適配尺寸的技巧,包括用object-fit來(lái)居中并裁剪圖片的方法,需要的朋友可以參考下2016-02-27CSS計(jì)數(shù)器counter()的用法簡(jiǎn)介
這篇文章主要介紹了CSS計(jì)數(shù)器counter()的用法,是CSS入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-09-26- 這篇文章主要介紹了CSS中的偽元素,是CSS入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-08-01
- 這篇文章主要介紹了CSS中的各種選擇符,是CSS入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-07-17
- 這篇文章主要介紹了Markdown.css樣式,用來(lái)實(shí)現(xiàn)顯示強(qiáng)大的Markdown樣式的文本,需要的朋友可以參考下2015-07-16
- CSS里一直有一個(gè)讓我們頭疼的問(wèn)題,就是創(chuàng)建布局很麻煩。當(dāng)然,有很多方式,有很多技術(shù)都可以創(chuàng)建各種布局,但我們總覺(jué)得CSS里應(yīng)該提供一些新屬性,讓我們能更好的管理布局2014-05-03
定義css設(shè)備類型-Media Queries圖表簡(jiǎn)介及使用方法
CSS3完美地解決了讓同一個(gè)網(wǎng)站同時(shí)適應(yīng)完全不同尺寸的屏幕這些問(wèn)題;css3提出的MediaQueries解決了為網(wǎng)站設(shè)計(jì)不同的CSS樣式文件,如打印樣式表文件,手機(jī)樣式文件,電腦樣式2013-01-21css3背景圖片透明疊加屬性cross-fade簡(jiǎn)介及用法實(shí)例
據(jù)說(shuō)iOS6系統(tǒng)(iPhone5)增加了兩個(gè)CSS3屬性,一個(gè)是CSS3 filters – CSS3濾鏡另外一個(gè)是CSS3 Cross-fade – CSS3交叉淡入淡出,接下來(lái)為您介紹cross-fade屬性,感興趣的朋友2013-01-08- 本文主要介紹了通用的css hack2012-07-11
網(wǎng)頁(yè)設(shè)計(jì)中的CSS Sprites技術(shù)介紹及其優(yōu)化方法
CSS Sprites 技術(shù)對(duì)于廣大的前端工程師來(lái)說(shuō)應(yīng)該是一點(diǎn)也不陌生。這個(gè)被國(guó)內(nèi)開(kāi)發(fā)者昵稱為CSS精靈 CSS雪碧的家伙到底解決了什么問(wèn)題,我們又怎樣合理使用這個(gè)技術(shù)呢?下面讓我2012-05-31

