1. 程式人生 > >CSS中的絕對定位和相對定位

CSS中的絕對定位和相對定位

position 屬性規定元素的定位型別。任何元素都可以定位,不過絕對或固定元素會生成一個塊級框,而不論該元素本身是什麼型別。相對定位元素會相對於它在正常流中的預設位置偏移。

position:relative | absolute | fixed | static | inherit

1.static 為預設值,無特殊定位,按照正常的文件流進行排列。

注意:當position為static時,定義top,left,bottom,right是不起作用的。

2.absolute 物件將脫離文件流,不再佔據元素在文件中的正常位置。它的偏移位置是以最近已定位的祖先元素作為參照,如果沒有已定位的祖先元素,則以頂級元素作為參照。

3.relative 元素不會脫離文件流,仍然佔據原來的空間,它的偏移位置會以自身的佔位空間作為參照。可以通過設定margin-top、margin-bottom為負值,來改變它在佔位空間中的高度。

  1. fixed 是特殊的absolute,會脫離文件流,總是以body為定位物件的,按照瀏覽器的視窗進行定位。

絕對定位——元素會脫離文件流,它的偏移位置是以最近已定位的祖先元素作為參照,如果沒有已定位的祖先元素,則以頂級元素作為參照。可以通過index來控制層級。

相對定位——元素不會脫離文件流,仍然佔據原來的空間,它的偏移位置會以自身的佔位空間作為參照。可以通過設定margin-top、margin-bottom為負值,來改變它在佔位空間中的高度。

小結

1.一般父級元素使用相對定位,子級元素使用絕對定位。

2.對於相對定位元素,left、right、top、bottom屬性與margin屬性混合使用會產生累加效果。

3.對於絕對定位元素,left、right、top、bottom屬性與margin屬性混合使用,偏移方向相同累加,方向相反margin值無效。

4.對於絕對定位元素,使用margin值進行佈局時,不管它有沒有已經定位的祖先元素,都會以它原來所在文件流中的位置作為參照。此時margin-top、margin-bottom不再對文件流中的元素產生影響,因為該元素已經脫離了文件流。

5.對於絕對定位元素和浮動元素,設定display:inline/block均無效,因為此時元素預設以display:inline-block顯示。