例項演示div css的絕對定位和相對定位布

2021-06-09 21:34:02 字數 2826 閱讀 5610

概要:

本文主要描述xhtml中相對定位和絕對定位各自的本質、用法、區別和兩者之間的關係。以及使用css的left、right、top、bottom屬性(偏移屬性)和margin屬性(外邊距)對定位塊級元素進行布局的方法。(本文的示例,請看這個附件demo。)

說明:

佔位空間:元素在文件流中所佔據的空間。

物理空間:元素本身所佔據的空間。

下面分3種情況分別對相對定位和絕對定位進行討論:

1.只使用css第一組屬性布局定位元素的情況

2.只使用css第二組屬性布局定位元素的情況

3.混合使用第一組和第二組屬性的情況

圖1為未定位時的初始效果,

層級關係為:

一、用相對定位布局塊級元素

元素設定position值: position:relative

此屬性值的設定,元素沒有脫離文件流,還是普通流定位模型的一部分,會對文件流中其它元素布局產生影響。(說明:藍色代表佔位空間,紅色代表元素)

1.僅使用left、right、top和bottom屬性布局相對定位元素的情況

元素原本所佔的佔位空間仍保留,物理空間偏移。

圖2中,設定元素的left和top的值,對box2進行布局,可以發現除了box2偏移之外,其他塊級元素的位置沒有被影響,可見box2的佔位空間還是存在的。

層級關係為:

2.僅使用margin屬性布局相對定位元素的情況

用margin-bottom屬性和margin-top屬性設定負值可以改變文件流中所佔空間的高度,會影響文件流中的其它元素位置。例如:margin-top:負值; margin-bottom:負值

圖3中,box1和box2都設定了元素margin-bottom的值,值等於它們高度的負值。box1和box2物理空間沒有改變,佔位空間高度為0。box3的margin-bottom值設定為0,物理空間沒有改變,佔位空間高度不變。再通過margin-left對box2和box3設定左偏移值。

層級關係為:

3.混合使用left、right、top和bottom屬性與margin屬性布局相對定位元素的情況

此情況,它們的值會產生累加的效果。在css2.1中所有的瀏覽器都使用外邊距邊界來完成 偏移計算。本文從數學的角度理解為偏移屬性值和外邊距屬性值累加。

圖4中,box2是在圖3的基礎上增加設定left的值產生的效果,可見margin-left的值和left的值產生了累加。(偏移量:80px = 110px - 30px)

層級關係為:

二、用絕對定位布局塊級元素

設定position值:position:absolute;

此屬性值的設定,元素從文件流完全刪除。

1.僅使用left、right、top和bottom屬性布局絕對定位元素的情況

絕對定位的元素的偏移位置以最近的定位(包括相對定位和絕對定位)祖先元素作參照物。如果元素沒有已定位(包括相對定位和絕對定位)的祖先元素,那麼它的參照物為最頂級元素(由於瀏覽器的預設參照物不同,物可能是body或 html 元素)。

注意:ie下參照物需設定寬度或高度bottom和right屬性才可以正確的定位。

設定元素為絕對定位元素後,元素的left、 right、top和bottom屬性預設值不是0,只是將元素脫離文件流。以下例子說明這個問題。

在圖5中,將橘黃色的祖先元素設定為定位元素(即參照物),box2設為絕對定位,文件流由box1-box2-box3變為box1-box3,可box2卻沒有移動到距離參照物0值的位置上,可見box2的left、 right、top和bottom屬性預設值不等於0,它只是脫離了文件流而已。

層級關係為:

以最近的祖先定位元素為參照物的情況

圖6中,box2設定成絕對定位元素,脫離了文件流,文件流由box1-box2-box3變為box1-box3,box2以最近的定位祖先(藍色框)為參照物。

層級關係為:

圖7中,為改變參照物(橘色框)後的效果

層級關係為:

圖8中,參照物為最頂級的元素情況

層級關係為:

2.僅使用margin屬性布局絕對定位元素的情況

此情況,margin-bottom 和margin-right的值不再對文件流中的元素產生影響,因為該元素已經脫離了文件流。另外,不管它的祖先元素有沒有定位,都是以文件流中原來所在的位置上偏移參照物。

圖9中,使用margin屬性布局相對定位元素。

層級關係為:

ie6的情況下,box2前面沒有兄弟節點,則margin-left的值會出現雙倍邊距,見圖10。

層級關係為:

3.混合使用left、right、top和bottom屬性與margin屬性布局相對定位元素的情況

a.margin屬性和top、bottom、left、right屬性同時使用,如果同一方向偏移,它們的值會產生累加的效果,見圖11。

例如:margin-left:120px; left:-20px; 那麼box2的偏移值為120px-20px=100px;

層級關係為:

b.絕對定位和相對定位的累加加效果不同,如果top、bottom、left、right屬性和margin屬性偏移的方向相反,top、bottom、left、right屬性值有效,反方向的margin屬性值無效,見圖12。

層級關係為:

總結:

例項演示div css的絕對定位和相對定位

概要 本文主要描述xhtml中相對定位和絕對定位各自的本質 用法 區別和兩者之間的關係。以及使用css的left right top bottom屬性 偏移屬性 和margin屬性 外邊距 對定位塊級元素進行布局的方法。說明 佔位空間 元素在文件流中所佔據的空間。物理空間 元素本身所佔據的空間。下面...

div css絕對定位和相對定位

很多朋友問過我absolute與relative怎麼區分,怎麼用?我們都知道absolute是絕對定位,relative是相對定位,但是這個絕對與相對是什麼意思呢?絕對是什麼地方的絕對,相對又是相對於什麼地方而言的呢?那他們又有什麼樣的特性,可以做出什麼樣的效果呢?關於兩者之間又有什麼樣的技巧呢?下...

css的相對定位 絕對定位

相對定位 relative 絕對定位 absolute 相對定位 relative 相對於原來位置移動,元素設定此屬性之後仍然處在文件流中,不影響其他元素的布局 絕對定位 absolute 1.在父元素沒有設定相對定位或絕對定位的情況下,元素相對於根元素定位 即html元素 是父元素沒有 2.父元素...