css sprites 多張圖片整合在一張圖片上


一、什么是css sprites 

css sprites直譯過來就是CSS精靈。通常被解釋為“CSS圖像拼合”或“CSS貼圖定位”。其實就是通過將多個圖片融合到一張圖里面,然后通過CSS background背景定位技術技巧布局網頁背景。這樣做的好處也是顯而易見的,因為圖片多的話,會增加http的請求,無疑促使了網站性能的減低,特別是圖片特別多的網站,如果能用css sprites降低圖片數量,帶來的將是速度的提升。

css sprites是什么通俗解釋:CSS Sprites其實就是把網頁中一些背景圖片整合拼合成一張圖片中,再利用DIV CSS的“background-image”,“background- repeat”,“background-position”的組合進行背景定位,background-position可以用數字能精確的定位出背景圖片在布局盒子對象位置。

二、適合與不適合DIV CSS sprites拼合布局  

1、適合:一般小圖標素材
小的圖標ico類素材,一般圖標很小十多像素幾十像素的寬度高度,這種適合拼合成一張圖實現sprites background背景定位布局。多小ico太多自然加載網頁時瞬間會消耗些http iis鏈接數,但很快加載完又會釋放。

2、不適合:大圖大背景
大背景一般用於網頁背景,拼合時,設置為網頁背景時所有背景都會顯示出來。大圖拼接拼合會增大圖片大小,網絡帶寬不好的訪問者訪問時由於背景圖大文件大會加載稍慢些,所以大圖不推薦拼接拼合來使用css sprites背景定位布局。

3、sprites適合推薦小結
一般此sprites拼合布局用於局部小盒子布局不適合大背景大布局背景使用。比如小局部布局小圖標背景、小導航背景等DIVCSS布局。

三、div css sprites優勢與缺點劣勢判斷選擇  

1、sprites優勢:
若干小圖標拼合成一張圖后布局,減少http iis請求數,對於大戰大流量網站來說隱形優勢很顯然的,從而隱形地提升了網站性能。對於大流量網站來說本來http請求數比較寶貴,使用DIV+CSS Sprites這樣可以大大的提高了頁面的性能,這是CSS Sprites最大的優點,也是其被廣泛傳播和應用的主要原因,同時也減少圖片文件數目。

2、sprites缺點
在圖片合並的時候,你要把多張圖片有序的合理的合並成一張圖片,還要留好只夠的空間,防止板塊內不會出現不必要的背景,如果留空間或拼合位置不合適,在布局時容易出現布局這個盒子對象時,設置背景出現拼合相鄰圖片,干擾圖片的情況;

CSS Sprites在開發的時候比較麻煩,你要通過photoshop(PS)或其他工具測量計算每一個背景單元的精確位置,這是針線活,沒什么難度,但是很繁瑣;

CSS Sprites在維護的時候比較麻煩,sprites是一般雙刃劍,如果頁面背景有少許改動,一般就要改這張合並的圖片,無需改的地方最好不要動,這樣避免改動更多的css,如果在原來的地方放不下,有只能(最好)往下加圖片,這樣圖片的字節就增加了,因為每次的圖片改動都得往這個圖片刪除或添加內容,顯得稍微繁瑣,而且重新算圖片的位置(尤其是這種上千px的圖)也是一件頗為不爽的事情

由於圖片的位置需要固定為某個絕對數值,這就失去了諸如center之類的靈活性。

3、DIVCSS5推薦小結
猶豫拼接圖片需要一定經驗技巧(做實踐即可快速掌握)、測量定位數值、修改不是那么靈活等原因,一般小網站站、小流量網站、一般企業網站不是很推薦使用CSS Sprites,因為使用CSS Sprites會比普通單個背景圖片布局要耗費時間和精力,所以不是很推薦小站。但這個布局技巧也必須要學會掌握靈活布局才是目的。小站HTTP請求數豐富這點拼接其實也起不來什么優勢反而會浪費寶貴時間。相反大網站大流量網站推薦使用,這樣比較值得。

四、css sprites實例

sprites案例圖片素材:

實例代碼:

<!DOCTYPE html>
<html>
<head>
    <meta name="viewport"
          content="width=device-width,initial-scale=1,minimum-scale=1, maximum-scale=1,minimal-ui, user-scalable=no"/>
    <style>
        .sprites div {
            margin: 5px;
        }
        .sprites span {
            float: left;
            width: 20px;
            height: 20px;
            background-image: url(sprite.png);
            background-size: 60px 40px;
        }
        .sprites1{
            background-position: 0 0;
        }
        .sprites2{
            background-position: -20px 0;
        }
        .sprites3{
            background-position: 0 -20px;
        }
        .sprites4{
            background-position: -20px -20px;
        }
        .sprites5{
            background-position: -40px 0;
        }
        .sprites6{
            background-position: -40px -20px;
        }
    </style>
</head>
<body>
<div class="sprites">
    <div><span class="sprites1"></span>付款圖標</div>
    <div><span class="sprites2"></span>刪除圖標</div>
    <div><span class="sprites3"></span>存款圖標</div>
    <div><span class="sprites4"></span>粘貼圖標</div>
    <div><span class="sprites5"></span>笑臉圖標</div>
    <div><span class="sprites6"></span>編輯圖標</div>
</div>
</body>
</html>

sprites實例效果:

說明:背景background-position有兩個數值,前一個代表靠左距離值(可為正可為負),第二個數值代表靠上距離值(可為正可為負)。當為正數時,代表背景圖片作為對象盒子背景圖片時靠左和靠上多少距離多少開始顯示背景圖片;當為負數時代表背景圖片作為盒子對象背景圖片,將背景圖片拖動超出盒子對象左邊多遠,拖動超出盒子對象上邊多遠開始顯示此背景圖片。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM