CSS相對(duì)定位和絕對(duì)定位區(qū)別揭秘
你對(duì)CSS相對(duì)定位和絕對(duì)定位區(qū)別是否了解,這里和大家分享一下,CSS絕對(duì)定位使元素的位置與文檔流無(wú)關(guān),因此不占據(jù)空間。這一點(diǎn)與CSS相對(duì)定位不同,CSS相對(duì)定位實(shí)際上被看作普通流定位模型的一部分,因?yàn)樵氐奈恢孟鄬?duì)于它在普通流中的位置。
CSS相對(duì)定位和絕對(duì)定位區(qū)別
CSS相對(duì)定位
CSS相對(duì)定位是一個(gè)非常容易掌握的概念。如果對(duì)一個(gè)元素進(jìn)行CSS相對(duì)定位,它將出現(xiàn)在它所在的位置上。然后,可以通過(guò)設(shè)置垂直或水平位置,讓這個(gè)元素“相對(duì)于”它的起點(diǎn)進(jìn)行移動(dòng)。
如果將top設(shè)置為20px,那么框?qū)⒃谠恢庙敳肯旅?0像素的地方。如果left設(shè)置為30像素,那么會(huì)在元素左邊創(chuàng)建30像素的空間,也就是將元素向右移動(dòng)。
- #box_relative{
- position:relative;
- left:30px;
- top:20px;
- }
如下圖所示:
注意,在使用CSS相對(duì)定位時(shí),無(wú)論是否進(jìn)行移動(dòng),元素仍然占據(jù)原來(lái)的空間。因此,移動(dòng)元素會(huì)導(dǎo)致它覆蓋其它框。
設(shè)置為CSS絕對(duì)定位的元素框從文檔流完全刪除,并相對(duì)于其包含塊定位,包含塊可能是文檔中的另一個(gè)元素或者是初始包含塊。元素原先在正常文檔流中所占的空間會(huì)關(guān)閉,就好像該元素原來(lái)不存在一樣。元素定位后生成一個(gè)塊級(jí)框,而不論原來(lái)它在正常流中生成何種類型的框。#p#
CSS絕對(duì)定位
CSS絕對(duì)定位使元素的位置與文檔流無(wú)關(guān),因此不占據(jù)空間。這一點(diǎn)與CSS相對(duì)定位不同,CSS相對(duì)定位實(shí)際上被看作普通流定位模型的一部分,因?yàn)樵氐奈恢孟鄬?duì)于它在普通流中的位置。
普通流中其它元素的布局就像CSS絕對(duì)定位的元素不存在一樣:
- #box_relative{
- position:absolute;
- left:30px;
- top:20px;
- }
如下圖所示:
CSS絕對(duì)定位的元素的位置相對(duì)于最近的已定位祖先元素,如果元素沒(méi)有已定位的祖先元素,那么它的位置相對(duì)于最初的包含塊。
對(duì)于定位的主要問(wèn)題是要記住每種定位的意義。所以,現(xiàn)在讓我們復(fù)習(xí)一下學(xué)過(guò)的知識(shí)吧:CSS相對(duì)定位是“相對(duì)于”元素在文檔中的初始位置,而CSS絕對(duì)定位是“相對(duì)于”最近的已定位祖先元素,如果不存在已定位的祖先元素,那么“相對(duì)于”最初的包含塊。
注釋:根據(jù)用戶代理的不同,最初的包含塊可能是畫布或HTML元素。
提示:因?yàn)镃SS絕對(duì)定位的框與文檔流無(wú)關(guān),所以它們可以覆蓋頁(yè)面上的其它元素。可以通過(guò)設(shè)置z-index屬性來(lái)控制這些框的堆放次序。
【編輯推薦】
- 深入理解DIV+CSS絕對(duì)定位和相對(duì)定位
- 三大CSS定位機(jī)制和position屬性用法
- CSS樣式表設(shè)計(jì)十個(gè)雕蟲小技
- 深入學(xué)習(xí)六大CSS選擇符的使用
- 解讀DIV CSS網(wǎng)頁(yè)布局中CSS無(wú)效十個(gè)原因