CSS 背景附著 background-attachment屬性
在CSS中,通過 body 元素 background-image 屬性來定義整個窗體的背景影象,通過其他元素自身的 background-image 屬性來定義元素自己的背景影象。
定義背景影象之後,預設情況下,當窗體的內容滾動時,窗體的背景影象會跟著一起移動,其他元素的背景影象則不同,始終相對於元素固定不動,不會跟著元素內容一起移動。
CSS提供了 background-attachment屬性,可以靈活控制背景影象是跟著元素的內容一起移動,還是固定不動。其可選值有 scroll | fixed | local,預設值為 scroll。
其中,fixed 只對 body 元素有效,local 只對 body 之外的其他元素有效,scroll 則對任何元素都有效。不同取值的含義見表表 4‑6:
屬性值 | 含義 |
---|---|
fixed | 背景影象相對於窗體固定。任憑頁面內容滾動,背景影象始終靜止不動 |
scroll | 背景影象相對於元素固定。當窗體的內容滾動時,窗體的背景影象會跟著移動;當一般元素的內容滾動時,背景影象不會跟著移動,因為背景影象總是要跟著元素本身,但會隨元素的祖先元素或窗體一起移動 |
loca | 背景影象相對於元素的內容固定。當元素的內容滾動時,背景影象總是要跟著內容一起移動 |
先來看看一般元素的效果。假設把一個容器 div 的 background-attachment 屬性值設定為 scroll,因為要檢視容器滾動時的效果,要把容器的 overflow 屬性設定為 scroll,還要限制容器的尺寸,以便在內容溢位時能產生滾動條。程式碼如下:
div {
width:160px;
height:160px;
overflow: scroll;
background-attachment: scroll;
background-repeat:no-repeat;
background-image:url(img/bg.gif);
}
<div>定義背景影象之後, …,不會隨著元素自身滾動條的滾動而移動。</div>
上述程式碼的執行結果如圖 4‑30 所示:
圖4-30 background-attachment:scroll效果從上圖可以看出,元素內容的滾動條已經向下滾動到達元素的底部,而背景影象並沒有隨著元素內容的滾動而移動。
現在,把 div 的 background- attachment屬性值設定為 local。執行結果如圖 4‑31 所示:
圖4-31 background-attachment:local效果從上圖可以看出,元素內容的滾動時,背景影象跟著內容一起移動。另外,對於一般元素,無論其 background-attachment屬性是什麼值,如果該元素的祖先元素或窗體發生滾動,則該元素連同其背景影象,會作為一個整體,跟著一起移動。
先來看看一般 body 元素的效果。如果把 body 元素的 background- attachment 屬性值設定為 scroll,當窗體的內容滾動時,窗體的背景影象會跟著一起移動。這個比較簡單,就不再舉例。
現在看看 body 的固定背景,假如為 body 元素定義了背景影象,背景影象在整個窗體的中央,位置固定,且不重複。CSS程式碼如下:
body {
background-position:50%50%;
background-repeat:no-repeat;
background-attachment:fixed;
background-image: url(img/bg.gif);
}
上述程式碼的執行效果如圖 4‑32 所示:
圖4-32 background-attachment:fixed效果從上圖可以看出,整個窗體的滾動條已經向下滾動,到達頁面的中間,而窗體的背景影象始終靜止不動,保持在整個窗體的中央。