探究position定位中absolute和relative的異同

一、默認(rèn)定位

HTML結(jié)構(gòu)如下:

是為了與窗口的頂部隔開距離便于觀察,neighboor和child2的div是為了對比位置,我們真正需要定位的焦點放在了child1的div上。

Position Attribute

Relative & Absolute

? ? ? ? ? ? ? ? ? ?

CSS如下:

.parent{background-color: yellow;height:200px;width:200px;display: inline-block;}.child1{background-color: green;height:100px;width:100px;}.child2{background-color: royalblue;height:50px;width:50px;}.neighboor{background-color: pink;height:200px;width:200px;display: inline-block;}

我們來看一下默認(rèn)定位的效果(特意留出地址欄方便觀察位置對比)

web前端上市企業(yè)技術(shù)免費視頻學(xué)習(xí)資源群:575057881

二、relative定位

首先我們來看一下官方的解釋:生成相對定位的元素,相對于其正常位置進行定位。我們來嘗試一下在child1中加入relative定位,并且輔以top和left位移值:

.child1{background-color: green;height:100px;width:100px;position: relative;top:20px;left:20px;}

效果如下:

web前端上市企業(yè)技術(shù)免費視頻學(xué)習(xí)資源群:575057881

我們看到綠色方塊代表的child1和原來的位置相比top和left偏移了,但是其他的div都安分守己地待在原處,就好像child1的位移并沒有對它們造成任何影響。

所以我們總結(jié)relative定位:

1.相對于元素原來的位置進行相應(yīng)的位移;

2.其他元素的位置并不受影響,也就是說被定位的元素原來的位置還存在占位,并沒有釋放。

三、absolute定位

首先我們還是來看一下官方的解釋:生成絕對定位的元素,相對于默認(rèn)定位以外的第一個父元素進行定位。我們嘗試一下在child1中加入absolute定位:

.child1{background-color: green;height:100px;width:100px;position: absolute;top:20px;left:20px;}

我們看到效果如下:

web前端上市企業(yè)技術(shù)免費視頻學(xué)習(xí)資源群:575057881

我們觀察到,綠色塊代表的child1是相對于瀏覽器視口進行了位移,而且它原來所占的位置被釋放掉,被紫色塊代表的child2給占領(lǐng)了。這里我們?nèi)菀椎玫絘bsolute和relative最重要的一個區(qū)別:relative定位不釋放原來所占的位置,absolute定位釋放原來所占的位置。還有個懸而未決的地方,就是absolute定位到底相對于誰進行位移的,在我們剛剛的試驗中,“貌似”是相對于瀏覽器視口進行偏移的,但是事實真的如此嗎?我們來研究一下官方的那句定義“相對于默認(rèn)定位以外的第一個父元素進行定位”。在我們剛剛的試驗中,parent、container、body都是chidl1的父元素,但是parent和container都是默認(rèn)定位,所以“默認(rèn)定位以外的第一個父元素”就是body元素了。那現(xiàn)在我們給parent進行relative定位(這里不需要設(shè)置LTRB偏移值,只是消除parent的默認(rèn)定位屬性),看到結(jié)果如下:

web前端上市企業(yè)技術(shù)免費視頻學(xué)習(xí)資源群:575057881

果然如和我們所料,這個時候“默認(rèn)定位以外的第一個父元素”就是parent了,所以這次child1是相對于黃色塊代表的div進行偏移的,而由于它釋放了原來所占的位置,紫色塊代表的div2就占領(lǐng)了它的位置。

總結(jié)一下absolute定位:

相對于誰進行定位有點復(fù)雜:就是找出定位元素父元素鏈上的所有父元素,由近到遠哪個元素不是默認(rèn)定位(即static定位)的,那么就相對于它進行定位。

定位元素會釋放原來所占的位置,其他元素會補充進來,好似float屬性讓其漂浮起來一樣。

當(dāng)父元素鏈上所有父元素都是默認(rèn)定位,那么absolute定位就是相對于body元素的,效果和fix定位差不多。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補...
    _Yfling閱讀 14,095評論 1 92
  • 1.文檔流的概念指什么?有哪種方式可以讓元素脫離文檔流? 文檔流也叫常規(guī)流,其實就是文檔的讀取和輸出順序,也就是我...
    墨月千樓閱讀 907評論 0 0
  • 學(xué)習(xí)建議 定位、浮動是 CSS 核心知識點,必須熟練掌握。 1.文檔流的概念指什么?有哪種方式可以讓元素脫離文檔流...
    饑人谷_任磊閱讀 1,156評論 0 3
  • 去年冬天,渭河灘上發(fā)生了幾場火災(zāi),浩浩蕩蕩的蘆葦叢,像被剃了頭似的,幾坨黑疤裸露在河床,令人觸目驚心。 幾天...
    風(fēng)鈴兒聲聲閱讀 432評論 6 2
  • 站樁D33-15m-20170615 昨天早上去游泳,沒有站樁。 今天匆忙站15分鐘,好多好多哈欠滾出來,后面哈欠...
    Marmotgo閱讀 356評論 0 0

友情鏈接更多精彩內(nèi)容