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

技術小阿哥發表於2017-11-27

層級關係為:
<div ——————————— position:relative; 不是最近的祖先定位元素,不是參照物
<div—————————-沒有設定為定位元素,不是參照物
<div———————- position:relative 參照物
<div box1
<div box2 ——–position:absolute; top:50px; left:120px;
<div box3
效果圖:

為改變參照物(橘色框)後的效果
層級關係為:
<div ——————————— position:relative;最近的祖先定位元素,參照物
<div—————————-沒有設定為定位元素,不是參照物
<div———————-沒有設定為定位元素,不是參照物
<div box1
<div box2 ——–position:absolute; top:50px; left:120px;
<div box3
效果圖:

參照物為最頂級的元素情況
層級關係為:
<div ———————————沒有設定為定位元素,不是參照物
<div—————————-沒有設定為定位元素,不是參照物
<div———————-沒有設定為定位元素,不是參照物
<div box1
<div box2 ——–position:absolute; top:50px; left:120px;
<div box3
效果圖:

僅使用margin屬性佈局絕對定位元素的情況
此情況,margin-bottom 和margin-right的值不再對文件流中的元素產生影響,因為該元素已經脫離了文件流。另外,不管它的祖先元素有沒有定位,都是以文件流中原來所在的位置上偏移參照物。  
圖9中,使用margin屬性佈局相對定位元素。
層級關係為:
<div ——————————— position:relative; 不是參照物
<div—————————-沒有設定為定位元素,不是參照物
<div———————-沒有設定為定位元素,不是參照物
<div box1
<div box2 ——–position:absolute; margin-top:50px; margin-left:120px;
<div box3
效果圖:

IE6的情況下,box2前面沒有兄弟節點,則margin-left的值會出現雙倍邊距,見圖10。
層級關係為:
<div ——————————— position:relative; 不是參照物
<div—————————-沒有設定為定位元素,不是參照物
<div———————-沒有設定為定位元素,不是參照物
<div box1
<div box2 ——–position:absolute; margin-top:50px; margin-left:60px;
<div box3
效果圖:

 補充:當父元素為relative時,相對於父元素 絕對定位,否則相對於body

 轉自:http://www.cnblogs.com/jiqing9006/archive/2012/07/26/2610586.html

 參考:http://blog.sina.com.cn/s/blog_a2069648010109zm.html

 另參考:http://bbs.blueidea.com/thread-2733320-1-1.html

相關文章