為了設計出更複雜的版面配置,我們需要探討關於 position
這個屬性。它有一大堆的屬性值,且這些屬性值不但很難懂,也特別難記憶。讓我們一個一個介紹吧,不過也建議你把這頁加入到我的最愛(書籤)裡。
static
是預設值。任何套用 position: static;
的元素「不會被特別定位」在頁面上特定位置,而是照著瀏覽器預設的配置自動排版在頁面上,所有其他的屬性值都代表該元素會被定位在頁面上。
relative
表現的和 static
一樣,除非你增加了一些額外的屬性。
在一個設定為 position: relative
的元素內設定 top
、 right
、 bottom
和 left
屬性,會使其元素「相對地」調整其原本該出現的所在位置,而不管這些「相對定位」過的元素如何在頁面上移動位置或增加了多少空間,都不會影響到原本其他元素所在的位置。
哈囉~ 先不要太關注我!
</div>
固定定位(position: fixed
)的元素會相對於瀏覽器視窗來定位,這意味著即便頁面捲動,它還是會固定在相同的位置。和 relative
一樣,我們會使用 top
、 right
、 bottom
和 left
屬性來定位。
我相信你已經注意到頁面右下角的固定定位元素,你現在可以注意看一下,這裡有它所使用的 CSS 樣式:
固定定位元素不會保留它原本在頁面應有的空間,不會跟其他元素的配置互相干擾。
令人驚訝的是,行動版裝置上的瀏覽器對 fixed
的支援度比想像的還差很多。學習關於此問題的相關文章.
absolute
應該是最弔詭的 position 屬性值。absolute
與 fixed
的行為很像,不一樣的地方在於 absolute
元素的定位是在他所處上層容器的相對位置。如果這個套用 position: absolute
的元素,其上層容器並沒有「可以被定位」的元素的話,那麼這個元素的定位就是相對於該網頁所有內容(也就是 <body> 元素)最左上角的絕對位置,看起來就是這張網頁的絕對位置一樣,所以當你的畫面在捲動時,該元素還是會隨著頁面捲動。請記得,只有套用 position: static
的元素屬於「不會被特別定位」的元素,套用 static
以外的屬性值都算是「可以被定位」的元素。
這裡有一個簡單的例子:
這個元素是相對定位的,如果它是 position: static;
,那麼它的子元素如果套用「絕對定位」的話,就會跳過它,並直接參考 body 元素的相對位置。
這個元素被設定成絕對定位(position: absolute;
),它會相對於它的父元素進行定位(相對於父元素的絕對定位)。
這部分確實比較難以理解,但它是讓你可以設計出一個良好 CSS 版面配置的必要知識。下一頁我們將會使用 position
來做出更實務的範例。