首頁 web前端 css教學 什麼是css sprite?對css sprite技巧總結

什麼是css sprite?對css sprite技巧總結

Apr 25, 2017 pm 03:16 PM
css

Css  sprite做為前端人員來說必須要掌握,但是這個對於剛學習的同學來說是由困難的,下面我就專門為這個內容做一次分享,這裡沒有網絡圖片地址,若內容顯示不全面你可以到我的個人部落格去查看

什麼是css sprite?對css sprite技巧總結

CSS Sprites在國內很多人叫css精靈,是一種網頁圖片應用處理方式。它允許你將一個頁面涉及到的所有零星圖片都包含到一張大圖中去,這樣一來,當訪問該頁面時,載入的圖片就不會像以前那樣一幅一幅地慢慢顯示出來了。對於目前網路流行的速度而言,不高於200KB的單張圖片的所需載入時間基本上是差不多的,所以無需顧忌這個問題。  加速的關鍵,不是降低重量,而是減少個數。傳統切圖講究精細,圖片規格越小越好,重量越小越好,其實規格大小無所謂,電腦統一都以byte計算。客戶端每顯示一張圖片都會向伺服器發送請求。所以,圖片越多請求次數越多,造成延遲的可能性就越大。

CSS Sprites其實就是把網頁中一些背景圖片整合到一張圖片檔案中,再利用CSS的“background-image”,“background- repeat”,“background-position”的組合進行背景定位,background-position可以用數字能精確的定位出背景圖片的位置。

下面我就詳細的講解下他的使用技巧,包你現在不懂的童鞋會有個清楚的全新了解,雖然目前有這樣的工具,但是還是要先清楚他的原理,技巧性的來做也會很快速的完成定位,以下分享加個案例。

首先跟大家說明一點,由於需要定位的背景都是合併在一張圖的,所以都是一刀切的,要么是X軸坐標一致要么是Y軸坐標一致,也就有了我下面要講述的2種類型了。

1。橫向定位座標

橫向定位座標意思是Y軸座標固定,它的特徵就是每個圖示的高度是一致的,透過改變x座標的位置來改變背景。只要測量每個圖示的寬度就可以知道x軸的座標了。如果你還不知道這個規律,下面我就講解給你聽吧,下面拿我做的2個案例來說事。

那麼具體來講解怎麼來定位,這裡是改變X座標來定位。

由於高度都是一樣所以Y軸上的座標都是0或top

這裡每個圖示我是用一個span做背景的,下面具體分析下程式碼:

<div class="join c">
            <strong>Join us on:</strong>
            <ul class="c">
                <li><a href="https://www.facebook.com/Fancyladies"><span class="sl">Facebook</span><span class="sharelogo facebookLogo"></span></a></li>
                <li><a href="http://pinterest.com/fancyladies/ "><span class="sl">Pinterest</span><span class="sharelogo pinterestLogo"></span></a></li>
                <li><a href="https://twitter.com/fancyladiescorp"><span class="sl">Twitter</span><span class="sharelogo twitterLogo"></span></a></li>
                <li><a href="http://www.flickr.com/photos/fancyladies"><span class="sl">flickr</span><span  class="sharelogo flickrLogo"></span></a></li>
                <li><a href="http://www.youtube.com/user/fancyladiescom"><span class="sl">Youtube</span><span class="sharelogo youtubeLogo"></span></a></li>
                <li><a href="http://www.fancyladies.com/blog/"><span class="sl">Blog</span><span class="sharelogo blogLogo"></span></a></li>
            </ul>
        </div>
登入後複製

下面是Css  code:

.sharelogo{display:inline-block;*display:inline;*zoom:1;height:46px;background-image:url(../images/shareIcon.jpg);background-repeat:none;}
 
.facebookLogo{background-position:0 0;width:20px;}
 
.pinterestLogo{background-position:-20px 0;width:42px;}
 
.twitterLogo{background-position:-62px 0;width:30px;}/**/
 
.flickrLogo{background-position:-92px 0;width:130px;}
 
.youtubeLogo{background-position:-222px 0;width:98px}
 
.blogLogo{background-position:-320px 0;width:84px;}
 
.sl{float:left;padding-right:10px;}
登入後複製

他們的背景圖片都是公用這一張背景:background-image:url(../images/shareIcon.jpg);

每個元素的背景都不允許重複:即:background-repeat:no-repeat;

讀到這裡你有發現一個規律,就是每個元素的座標等於前面元素的座標值加上寬度。即元素的橫向座標值公式等於。相鄰元素的座標值加上寬度。

pinterestLogo 的值等於facebookLogo的座標值20px+facebookLogo的寬度20px ;是不是很簡單啊,只要你知道元素的寬度就可以,因為橫向座標等必須要給個固定的寬度,所以這一步測量寬度不是浪費時間。希望仔細看源碼中座標值的規律。

不管是橫向定位與縱向定位座標的時候,他們的起始位置都是background-position:0  0;而橫向定位的時候高度是固定的,所以每次只需改變X座標的值就實現了。

例如facebook的logo是起始位置的圖標,所以它的座標值是0,0,就實現了它的定位。

那麼pinterest的logo就是它的下面一個,就是從facebook的寬度負值算起。由於facebook的寬度是21px;所以pinterest的logo座標就是background-position:-20px 0; 下面以此類推

twitterLogo 是pinterstLogo的下面一個,那麼就是用pinterstLogo的座標值加上pinterstlogo

的寬度,就得到了twitterLogo的座標位置了。是-(20px+42px)=-62px;即twitterLogo 的座標值為.twitterLogo{background-position:-62px 0;width:30px;}

##讀到這裡你有發現一個規律,就是每一個規律,就是每一個規則,就是每個相鄰元素的座標等於前面元素的座標值加上它前面元素的寬度。即元素的橫向座標值公司等於。相鄰元素的座標值加上它的寬度。好了下面講第二種方案了。

2.縱向定位座標

縱向定位座標就是X軸座標固定,改變Y軸座標值來實現背景的改變,他們的寬度是固定的,所以他們的X軸座標始終都是相同的,即0或left。下面我分享個案例

Css code:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<style type="text/css">
ul{margin:0;padding:0;float:left;width:32px;}
ul li{float:left;list-style-type:none;width:32px;background-image:url(image/bg.jpg);background-repeat:none;margin:10px 0;}
.f{background-position:0 0;height:32px;}
.p{background-position:0 -32px;height:20px}/*Y轴坐标等于起始位置的高度 即:-(0+32)*/
.fr{background-position:0 -52px;height:32px;}/*等于前面元素的Y轴坐标加上前面元素的高度,即:-(32+20) */
.h{background-position:0 -84px;height:32px;}/*等于前面元素的Y轴坐标加上前面元素的高度*即:-(52+32)*/
.t{background-position:0 -116px;height:32px;}/*等于前面元素的Y轴坐标加上前面元素的高度,即:-(84+32)*/
</style>
</head>
                                                                                           
<body>
<ul>                                                                                           
<li class="f"></li>
<li class="p"></li>
<li class="fr"></li>
<li class="h"></li>
<li class="t"></li>
</ul>
</body>
</html>
登入後複製

3.寬度和高度都相等的時候,那是最好不過了,直接做乘法,相信你的數學能力一家過了小學3年級了,Ok,還是來分享下。

1.寬度高度想等的情況下等位X軸座標,這種情況通常都出現在一組按鈕下,滑鼠滑過和點擊時候的背景改變。這種情況我也總結出來了,有公式:

X軸座標=-n(起始位置+寬度).

其中n值從0開始。即所有的起始位置的座標都是0,0開始起。下面依序類推。

例如你現在要定位的元素是第3個,假設我們這裡的圖標的寬度為30px.那麼他的X軸座標就等於。 x=-3*(0+30px);

Y軸的座標=-n(起始位置+高度)

例如你現在要定位的圖示為第6個位置,假設這裡的高度也是32px;那麼他的Y軸座標就是

Y=-6(0+32px)=-192px.   哈哈,當然有許多的工具,那個叫什麼gaga的工具雖然挺好,但是我沒用過,我一直都用我自己的這套,我自己在實踐中感覺挺方便的,所要分享下。

以上是什麼是css sprite?對css sprite技巧總結的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

vue中怎麼用bootstrap vue中怎麼用bootstrap Apr 07, 2025 pm 11:33 PM

在 Vue.js 中使用 Bootstrap 分為五個步驟:安裝 Bootstrap。在 main.js 中導入 Bootstrap。直接在模板中使用 Bootstrap 組件。可選:自定義樣式。可選:使用插件。

HTML,CSS和JavaScript的角色:核心職責 HTML,CSS和JavaScript的角色:核心職責 Apr 08, 2025 pm 07:05 PM

HTML定義網頁結構,CSS負責樣式和佈局,JavaScript賦予動態交互。三者在網頁開發中各司其職,共同構建豐富多彩的網站。

了解HTML,CSS和JavaScript:初學者指南 了解HTML,CSS和JavaScript:初學者指南 Apr 12, 2025 am 12:02 AM

WebDevelovermentReliesonHtml,CSS和JavaScript:1)HTMLStructuresContent,2)CSSStyleSIT和3)JavaScriptAddSstractivity,形成thebasisofmodernWebemodernWebExexperiences。

bootstrap怎麼設置框架 bootstrap怎麼設置框架 Apr 07, 2025 pm 03:27 PM

要設置 Bootstrap 框架,需要按照以下步驟:1. 通過 CDN 引用 Bootstrap 文件;2. 下載文件並將其託管在自己的服務器上;3. 在 HTML 中包含 Bootstrap 文件;4. 根據需要編譯 Sass/Less;5. 導入定製文件(可選)。設置完成後,即可使用 Bootstrap 的網格系統、組件和样式創建響應式網站和應用程序。

bootstrap怎麼寫分割線 bootstrap怎麼寫分割線 Apr 07, 2025 pm 03:12 PM

創建 Bootstrap 分割線有兩種方法:使用 標籤,可創建水平分割線。使用 CSS border 屬性,可創建自定義樣式的分割線。

bootstrap怎麼插入圖片 bootstrap怎麼插入圖片 Apr 07, 2025 pm 03:30 PM

在 Bootstrap 中插入圖片有以下幾種方法:直接插入圖片,使用 HTML 的 img 標籤。使用 Bootstrap 圖像組件,可以提供響應式圖片和更多樣式。設置圖片大小,使用 img-fluid 類可以使圖片自適應。設置邊框,使用 img-bordered 類。設置圓角,使用 img-rounded 類。設置陰影,使用 shadow 類。調整圖片大小和位置,使用 CSS 樣式。使用背景圖片,使用 background-image CSS 屬性。

bootstrap按鈕怎麼用 bootstrap按鈕怎麼用 Apr 07, 2025 pm 03:09 PM

如何使用 Bootstrap 按鈕?引入 Bootstrap CSS創建按鈕元素並添加 Bootstrap 按鈕類添加按鈕文本

bootstrap怎麼調整大小 bootstrap怎麼調整大小 Apr 07, 2025 pm 03:18 PM

要調整 Bootstrap 中元素大小,可以使用尺寸類,具體包括:調整寬度:.col-、.w-、.mw-調整高度:.h-、.min-h-、.max-h-

See all articles