CSS背景控制
背景色
可以使用 background-color 屬性為元素設定背景色。這個屬性接受任何合法的顏色值。
這條規則把元素的背景設定為灰色:
p {background-color: gray;}
如果您希望背景色從元素中的文本向外少有延伸,只需增加一些內邊距:
p {background-color: gray; padding: 20px;}
可以為所有元素設定背景色,這包括 body 一直到 em 和 a 等行內元素。
background-color 不能繼承,其預設值是 transparent。transparent 有“透明”之意。也就是說,如果一個元素沒有指定背景色,那麼背景就是透明的,這樣其祖先元素的背景才能可見。
背景映像
要把映像放入背景,需要使用 background-image 屬性。background-image 屬性的預設值是 none,表示背景上沒有放置任何映像。
如果需要設定一個背景映像,必須為這個屬性設定一個 URL 值:
body {background-image: url(/i/eg_bg_04.gif);}大多數背景都應用到 body 元素,不過並不僅限於此。
下面例子為一個段落應用了一個背景,而不會對文檔的其他部分應用背景:
p.flower {background-image: url(/i/eg_bg_03.gif);}
您甚至可以為行內元素設定背景映像,下面的例子為一個連結設定了背景映像:
a.radio {background-image: url(/i/eg_bg_07.gif);}
理論上講,甚至可以向 textareas 和 select 等替換元素的背景應用映像,不過並不是所有使用者代理程式都能很好地處理這種情況。
另外還要補充一點,background-image 也不能繼承。事實上,所有背景屬性都不能繼承。
背景重複
如果需要在頁面上對背景映像進行平鋪,可以使用 background-repeat 屬性。
屬性值 repeat 導致映像在水平垂直方向上都平鋪,就像以往背景映像的通常做法一樣。repeat-x 和 repeat-y 分別導致映像只在水平或垂直方向上重複,no-repeat 則不允許映像在任何方向上平鋪。
預設地,背景映像將從一個元素的左上方開始。請看下面的例子:
body
{
background-image: url(/i/eg_bg_03.gif);
background-repeat: repeat-y;
}
背景關聯
如果文檔比較長,那麼當文檔向下滾動時,背景映像也會隨之滾動。當文檔滾動到超過映像的位置時,映像就會消失。
您可以通過 background-attachment 屬性防止這種滾動。通過這個屬性,可以聲明映像相對於可視區是固定的(fixed),因此不會受到滾動的影響:
body
{
background-image:url(/i/eg_bg_02.gif);
background-repeat:no-repeat;
background-attachment:fixed
}
background-attachment 屬性的預設值是 scroll,也就是說,在預設的情況下,背景會隨文檔滾動。
背景定位
可以利用 background-position 屬性改變映像在背景中的位置。
下面的例子在 body 元素中將一個背景映像置中放置:
body
{
background-image:url('/i/eg_bg_03.gif');
background-repeat:no-repeat;
background-position:center;
}
為 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%;
}
這會導致映像適當放置,其中心與其元素的中心對齊。換句話說,百分數值同時應用於元素和映像。也就是說,映像中描述為 50% 50% 的點(中心點)與元素中描述為 50% 50% 的點(中心點)對齊。
如果映像位於 0% 0%,其左上方將放在元素內邊距區的左上方。如果映像位置是 100% 100%,會使映像的右下角放在右邊距的右下角。
因此,如果你想把一個映像放在水平方向 2/3、垂直方向 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。這就解釋了背景映像為什麼總是從元素內邊距區的左上方開始平鋪,除非您設定了不同的位置值。
長度值
長度值解釋的是元素內邊距區左上方的位移。位移點是映像的左上方。
比如,如果設定值為 50px 100px,映像的左上方將在元素內邊距區左上方向右 50 像素、向下 100 像素的位置上
body
{
background-image:url('/i/eg_bg_03.gif');
background-repeat:no-repeat;
background-position:50px 100px;
}
注意,這一點與百分數值不同,因為位移只是從一個左上方到另一個左上方。也就是說,映像的左上方與 background-position 聲明中的指定的點對齊。