利用CSS定位背景圖片 background-position
又如:

這些小圖片就是整圖分割后的各個(gè)部分,把各個(gè)部分放在一張圖片上,而不是是分別存儲(chǔ)成單獨(dú)的圖片,其目的我們都知道,就是減少http請(qǐng)求次數(shù),節(jié)省時(shí)間和帶寬。
那么怎么來(lái)實(shí)現(xiàn)一張圖片在不同的地方只顯示其中的一部分呢,這就用到了我們今天要說(shuō)的背景圖片的定位問(wèn)題。這個(gè)問(wèn)題相信很多人都郁悶過(guò),也經(jīng)常有朋友問(wèn)我,所以今天就系統(tǒng)的說(shuō)一下:
我們知道在用圖片作為背景的時(shí)候,css要這樣寫,以div容器舉例子,也可以是body、td、p等的背景,道理一樣。
|
代碼: div{ background:#FFF url(image) no-repeat fixed x y;} |
這里的background的屬性值依次為:
#FFF 背景色:(顏色值,背景圖片沒(méi)有覆蓋的地方,或者沒(méi)有背景圖片時(shí)表現(xiàn)的背景色)
image 背景圖片:(這里是圖片的地址)
no-repeat 是否重復(fù):(圖片小于容器的大小時(shí),默認(rèn)會(huì)重復(fù)排列圖片以填滿容器,no-repeat表示不重復(fù),只有這個(gè)時(shí)候后面的定位坐標(biāo)才有用。)
fixed 背景是否隨容器滾動(dòng):(有兩個(gè)可選值,scroll滾動(dòng),fixed不滾動(dòng),默認(rèn)是scroll)
x y 背景圖像的定位:(注意,只有在no-repeat下定位才有意義。這個(gè)就是今天要講的重點(diǎn))
背景圖像定位中我們要明確的幾點(diǎn):
1、兩個(gè)值前面一個(gè)是橫向的定位,我們稱為x軸方向定位。后面一個(gè)值是縱向的定位,我們稱為y軸方向定位。如果只有一個(gè)值,那默認(rèn)的就是x軸方向,這時(shí)y軸方向就默認(rèn)的是上下居中對(duì)齊,也就是center。
2、坐標(biāo)軸的原點(diǎn)就是對(duì)應(yīng)容器的左頂點(diǎn)。
3、這個(gè)坐標(biāo)的y軸箭頭朝下,也就是右下方(容器內(nèi)部)x y的值才都為正。
4、x y值分別表示背景圖片的左頂點(diǎn)相對(duì)于坐標(biāo)原點(diǎn)(也就是容器的左頂點(diǎn))的值。
5、x y的值可以用百分比或者px來(lái)表示。
6、x y也可以用“left、right、top、bottom、center”這五個(gè)對(duì)齊方式來(lái)表示,但注意:用“left、right、top、bottom、center”來(lái)表示的時(shí)候,應(yīng)用的是對(duì)齊規(guī)則,而不是坐標(biāo)規(guī)則。x為left是表示圖片的左邊和容器的左邊對(duì)齊,為right的時(shí)候表示圖片的右邊和容器的右邊對(duì)其,y為top的時(shí)候表示圖片的頂部和容器的頂部對(duì)齊,為bottom時(shí)表示圖片的底部和容器的底部對(duì)齊,x y等于center的時(shí)候表示居中對(duì)齊。
7、x y用百分比或者px表示的時(shí)候,其值可以為負(fù)數(shù)。我們應(yīng)用坐標(biāo)規(guī)則就很容易理解負(fù)數(shù)表示的意義,x為負(fù)數(shù)時(shí)候表示圖片左頂點(diǎn)在容器左頂點(diǎn)的左側(cè),y為負(fù)數(shù)時(shí)表示圖片的左頂點(diǎn)在容器的左定點(diǎn)的上方。也就是向左和向上超出容器的范圍。
下面我用幾個(gè)圖示來(lái)說(shuō)明一下幾種情況,藍(lán)色塊表示圖片,虛線框表示容器(可以div,td,或者直接就是body),注意只有背景圖片在容器內(nèi)我們才能看見(jiàn),我用白色表示可見(jiàn)部分,而且超出容器范圍的是看不見(jiàn)的,我用灰色表示。容器的左定點(diǎn)的坐標(biāo)就是(0,0)。

第一張,背景圖片和容的左上對(duì)齊,0px 0px 也可以寫成left top

第二張,背景圖在容器中間,定點(diǎn)坐標(biāo)為正值

第三張,背景圖部分在容器左上,定點(diǎn)坐標(biāo)為負(fù)值
---------------------------------------------------------------------------
到此我們可能就明白了如何用background里的定位值來(lái)準(zhǔn)確定位一個(gè)背景圖片,返回去我們看一下開(kāi)始的時(shí)候介紹的兩個(gè)圖片,我們就是可以用:背景定位和容器內(nèi)才可見(jiàn)這兩個(gè)性質(zhì)來(lái)隨意的調(diào)用整張圖片的某一部分。
但是我們?yōu)榱苏{(diào)用方便,在排列這些小圖片的時(shí)候要講究一點(diǎn)規(guī)則,比如:小圖之間的距離通常是調(diào)用小圖的容器的大小,或者距離更大一點(diǎn),這樣就可以避免在容器內(nèi)顯示出我們不愿意顯示的圖片!
補(bǔ)充一點(diǎn),如果定位用的是百分比話,算法比較特殊。我舉個(gè)例子:
|
代碼: background:#FFF url(image) no-repeat fixed 50% -30%; |
這個(gè)時(shí)候圖片應(yīng)該在容器的什么位置呢,算法公式如下:
圖片左頂點(diǎn)距容器左頂點(diǎn)的坐標(biāo)位置為
x:(容器的寬度-圖片的寬度)x50%
y:(容器的高度-圖片的高度)x(-30%)
得到的結(jié)果應(yīng)用坐標(biāo)法則,差值如果為負(fù)數(shù),百分比為正那么運(yùn)算結(jié)果是負(fù)值。如果差值為負(fù)數(shù),百分比也為負(fù)數(shù),那么運(yùn)算結(jié)果就是正數(shù)。總而言之就是這里的運(yùn)算符合運(yùn)算法則。把運(yùn)算的結(jié)果帶入坐標(biāo)法則就能得到圖片的位置。
比如:容器是width:600px;height:600px;而圖片是width:200px;height:200px;
我們用上面的樣式,可以得到圖片位置為:
x:(600px-200px)*50%
y:(600px-200px)*(-30%)
如下圖:

相關(guān)文章
CSS規(guī)則的結(jié)構(gòu)和Grouping、class和id-CSS教程-網(wǎng)頁(yè)制作-網(wǎng)頁(yè)教學(xué)網(wǎng)
2.1 規(guī)則的結(jié)構(gòu) <rules>::=<selector> <左括號(hào)><declarations><右括號(hào)> <declarations>::= <declaration>{<SE2008-10-17- 下面小編就為大家?guī)?lái)一篇css background 背景圖的設(shè)置方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-08-30
CSS的background屬性及CSS3的背景圖片設(shè)置總結(jié)
這篇文章主要介紹了CSS的background屬性及CSS3的背景圖片設(shè)置總結(jié),背景圖片的顯示區(qū)域和定位是非常值得注意的地方,需要的朋友可以參考下2016-06-13- 固定背景圖片的通常方法就是把background-attachment設(shè)成fix,進(jìn)一步的話自然則是用background-position,下面來(lái)詳解使用CSS固定頁(yè)面背景圖片及位置的方法:2016-05-17
- 在chrome,F(xiàn)F里調(diào)試完后,忽然想起ie來(lái),放到Ie里其它還好了,但是有個(gè)背景圖片顯示不出來(lái),具體的寫法如下,有類似情況的朋友可以參考下2013-11-25
使用css的background:url設(shè)置背景圖方法
設(shè)置背景圖的方法一般是使用css的background:url來(lái)實(shí)現(xiàn)的,下面有個(gè)示例,大家可以參考下2013-10-14學(xué)習(xí)CSS的背景圖像屬性background-CSS教程-網(wǎng)頁(yè)制作-網(wǎng)頁(yè)教學(xué)網(wǎng)
CSS的背景屬性“background”提供了眾多屬性值,如顏色、圖像、定位等,為網(wǎng)頁(yè)背景圖像的定義提供了極大的便利。看看background提供的屬性值: background2008-10-17通過(guò)css使用background-color為背景圖添加遮罩效果的兩種方法
這篇文章主要介紹了通過(guò)css使用background-color為背景圖添加遮罩效果的兩種方法,需要的朋友可以參考下2018-07-12

