實際上,若是沒有發明image標籤,可能就沒有網頁設計師這門職業。css
然而對image標籤的濫用可能致使純修飾性的圖像把頁面弄亂。好在CSS使咱們可以在頁面上顯示圖像,而不須要讓圖像成爲標記的一部分。實現方法是將圖像做爲背景添加到現有的元素中。html
背景圖像基礎:算法
默認狀況下,瀏覽器垂直和水平的重複顯示背景圖像,讓圖像平鋪整個頁面。瀏覽器
漸變效果:目前漸變很是時髦,你可能但願在頁面上應用垂直漸變,爲此須要建立一個很高可是很窄的漸變圖像,而後將這個圖像應用於頁面的主體,並讓他水平平鋪。url
由於這個漸變圖像的高度是固定的,因此若是頁面內容的長度超過了圖像高度,那麼漸變會忽然中止,解決方法是,再添加一個背景色,由於背景圖像老是出如今背景顏色的上面,因此當圖像結束時,背景顏色就會顯示出來。spa
小技巧:設計
建議:最好不要混合使用關鍵字和單位。htm
一、background-position:0 0;對象
背景圖片的左上角將與容器元素的左上角對齊。該設置與background-position:left top;或者background-position:0% 0%;設置的效果是一致的。
blog
二、該屬性定位不受對象的補丁屬性( padding )設置影響。
例如,咱們給容器元素增長padding值,背景圖片的左上角仍是與容器元素的左上角對齊。在此處只是影響到了容器元素的高度和寬度。
爲 background-position 屬性提供值有不少方法。首先,可使用一些關鍵字:top、bottom、left、right 和 center。一般,這些關鍵字會成對出現,不過也不老是這樣。還可使用長度值,如 100px 或 5cm,最後也可使用百分數。不一樣類型的值對於背景圖像的放置稍有差別。
關鍵字:
圖像放置關鍵字最容易理解,其做用如其名稱所代表的。例如,top right 使圖像放置在元素內邊距區的右上角。
根據規範,位置關鍵字能夠按任何順序出現,只要保證不超過兩個關鍵字 - 一個對應水平方向,另外一個對象垂直方向。
若是隻出現一個關鍵字,則認爲另外一個關鍵字默認是 center。
因此,若是但願每一個段落的中部上方出現一個圖像,只需聲明以下:
p {
background-image:url('bgimg.gif');
background-repeat:no-repeat;
background-position:top;
}
下面是等價的位置關鍵字:
單一關鍵字 |
等價的關鍵字 |
Center |
center center |
top |
top center 或 center top |
bottom |
bottom center 或 center bottom |
right |
right center 或 center right |
left |
left center 或 center left |
百分數值:
百分數值的表現方式更爲複雜。假設你但願用百分數值將圖像在其元素中居中,這很容易:
body {
background-image:url('/i/eg_bg_03.gif');
background-repeat:no-repeat;
background-position:50% 50%;
}
KEY: 這會致使圖像適當放置,其中心與其元素的中心對齊。換句話說,百分數值同時應用於元素和圖像。也就是說,圖像中描述爲 50% 50% 的點(中心點)與元素中描述爲 50% 50% 的點(中心點)對齊(重合)。
例如:若是圖像位於 0% 0%,其左上角將放在元素內邊距區的左上角。若是圖像位置是 100% 100%,會使圖像的右下角放在右邊距的右下角。(也就是top,left,bottom,center…均可以對應0%,100%和50%)
所以,若是你想把一個圖像放在水平方向 2/三、垂直方向 1/3 處,能夠這樣聲明:
body {
background-image:url('/i/eg_bg_03.gif');
background-repeat:no-repeat;
background-position:66% 33%;
}
若是隻提供一個百分數值,所提供的這個值將用做水平值,垂直值將默認爲50%。這一點與關鍵字相似。
background-position 的默認值是 0% 0%,在功能上至關於 top left。這就解釋了背景圖像爲何老是從元素內邊距區的左上角開始平鋪,除非您設置了不一樣的位置值。
舉例說明:
background:#FFF url(image) no-repeat fixed 50% -30%;
這個時候圖片應該在容器的什麼位置呢,算法公式以下:
圖片左頂點距容器左頂點的座標位置爲
x:(容器的寬度-圖片的寬度)x50%
y:(容器的高度-圖片的高度)x(-30%)
獲得的結果應用座標法則,差值若是爲負數,百分比爲正那麼運算結果是負值。若是差值爲負數,百分比也爲負數,那麼運算結果就是正數。總而言之就是這裏的運算符合運算法則。把運算的結果帶入座標法則就能獲得圖片的位置。
好比:
容器是width:600px;height:600px;
圖片是width:200px;height:200px;
咱們用上面的樣式,能夠獲得圖片位置爲:
x:(600px-200px)*50%
y:(600px-200px)*(-30%)
長度值:
長度值解釋的是元素內邊距區左上角的偏移。偏移點是圖像的左上角。
好比,若是設置值爲 50px 100px,圖像的左上角將在元素內邊距區左上角向右 50 像素、向下 100 像素的位置上:
body{
background-image:url('/i/eg_bg_03.gif');
background-repeat:no-repeat;
background-position:50px 100px;
}
注意,這一點與百分數值不一樣,由於偏移只是從一個左上角到另外一個左上角。也就是說,圖像的左上角與 background-position 聲明中的指定的點對齊。
例如在一個寬高均爲300px的容器中,使用:
background-position: 150px 150px;
能夠看到背景圖片的左上角頂點(座標0,0)定位到了齊容器的中心點(座標150px,150px)。
而把150px替換爲50%,使用background-position: 50% 50%;
看到的並不是以下的效果:
而是這樣:
可見,CSS計算出了背景圖片的中心點。這也能夠解釋爲何咱們在使用:
background-position: 100% 100%;
定位的時候,圖片被放置在容器的右下角,而並無跑出容器。(若是使用 background-position: 300px 300px; 的話,背景圖片會被移出容器)
一樣,若是使用:
background-position: 20% 20%;
會將背景圖片的座標點(20%,20%)定位到容器的座標點(20%,20%)。
另外能夠參考:http://www.ruanyifeng.com/blog/2008/05/css_background_image_positioning.html