CSS Sprites簡介以及優(yōu)缺點

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