深入理解position:relative 与 position:absolute(divb相对于diva进行绝对定位)
生活随笔
收集整理的這篇文章主要介紹了
深入理解position:relative 与 position:absolute(divb相对于diva进行绝对定位)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
position 有三個值,static(靜態(tài))、relative(相對)、absolute(絕對);由于static是所有頁面元素的默認值,因此設(shè)置元素的定位類型時幾乎不用這個值,除非用于覆蓋之前的定義。對于后兩者,一般應用:在一個相對定位的元素里面放置一個絕對定位的元素,如圖: ?????????????????????????????????? ? ? 子元素B可以通過top、right、bottom、left來精確定位,定位的參考目標就是其具有相對定位屬性的父級元素A;并且設(shè)置這些偏移后,產(chǎn)生的空隙會被后面的元素填充(如果后面的元素足夠尺寸的話)。由于B元素具有absolute定位屬性,相當于從文檔流中抽取出來,浮動在原平面排版上,形成“層”,如果有多個“層”,層與層之間就必然會有誰覆蓋誰,誰在上誰在下的競爭關(guān)系,因此,為解決這個競爭,就產(chǎn)生了 z-index(空間坐標系的Z軸) 屬性,誰的值大,誰就在上面。另外,如果父級元素A沒有設(shè)置relative,那么B元素就會以body標簽當作參考點。
對于具有position:relative屬性的元素A,其top、right、bottom、left四個方向的位置偏移就會以該元素的原來位置作為參考點,而不是像上面說的,以具有relative定位屬性的父級元素或body作為參考點。在設(shè)置了偏移后產(chǎn)生了空隙,其周圍的元素并不會填充這些空隙,即使它們足夠尺寸(演示)。 值得注意的是,此時元素A的margin,margin將作用于該元素的原來位置,由于原位置產(chǎn)生偏移,該元素的最終位置將是margin與top、right、bottom、left共同作用后的位置,并且其周圍元素的位置也將產(chǎn)生影響。
回過頭來再看看 relative 里面的 absolute,比如上面的A、B兩個元素,如果兩個元素都設(shè)置了top、right、bottom、left,對于元素B來說,其位置偏移的參考點是元素A偏移后的位置,不是元素A的原位置,同樣,如果元素B有margin,其參考點也是元素A偏移后的位置,這點很重要,這才是absolute的概念(演示)。
=======================================================
用Div+CSS進行網(wǎng)站布局時,做一些浮動層等特殊特殊效果時要考慮到定位問題。這就要用到Position屬性等。 Position屬性有四個值: static、fixed、absolute和relative,后面兩個在布局中的定位里是經(jīng)常用到的,顧名思義,absolute是指絕對定位,即將對象從文檔流中拖出,使用left,right,top,bottom等屬性進行絕對定位,而其層疊通過z-index屬性定義。此時對象不具有邊距,但仍有補白和邊框。ralative是指相對定位,就是依據(jù)left,right,top,bottom等屬性在正常文檔流中偏移位置。
但是,怎么個絕對法,又怎么個相對法呢?以前我一直沒有仔細去研究它,到具體應用時有時會有點迷糊,我相信很多朋友也會有這樣的問題。今天我特意測試了一下,得出了以下結(jié)論:
1、當Position屬性值為Relative時
對象原來占有的位置保留,其后面的對象按原來文檔流仍然保持原來的位置
Top的值表示對象相對原位置向下偏移的距離
bottom的值表示對象相對原位置向上偏移的距離
兩者同時存在時,只有Top起作用。
left的值表示對象相對原位置向右偏移的距離
right的值表示對象相對原位置向左偏移的距離
兩者同時存在時,只有l(wèi)eft起作用。
2、當Position屬性值為absolute時
對象從文檔流中抽取出來,原占有的位置被后面的對象頂替上來
Top的值表示對象上邊框與瀏覽器窗口頂部的距離
bottom的值表示對象下邊框與瀏覽器窗口底部的距離
兩者同時存在時,只有Top起作用;如果兩者都未指定,則其頂端將與原文檔流位置一致,即垂直保持位置不變。
left的值表示對象左邊框與瀏覽器窗口左邊的距離
right的值表示對象右邊框與瀏覽器窗口右邊的距離
兩者同時存在時,只有l(wèi)eft起作用;如果兩者都未指定,則其左邊將與原文檔流位置一致,即水平保持位置不變。
在Position屬性值為absolute的同時,如果有一級父對象(無論是父對象還是祖父對象,或者再高的輩分,一樣)的Position屬性值為Relative時,則上述的相對瀏覽器窗口定位將會變成相對父對象定位,這對精確定位是很有幫助的。
對于具有position:relative屬性的元素A,其top、right、bottom、left四個方向的位置偏移就會以該元素的原來位置作為參考點,而不是像上面說的,以具有relative定位屬性的父級元素或body作為參考點。在設(shè)置了偏移后產(chǎn)生了空隙,其周圍的元素并不會填充這些空隙,即使它們足夠尺寸(演示)。 值得注意的是,此時元素A的margin,margin將作用于該元素的原來位置,由于原位置產(chǎn)生偏移,該元素的最終位置將是margin與top、right、bottom、left共同作用后的位置,并且其周圍元素的位置也將產(chǎn)生影響。
回過頭來再看看 relative 里面的 absolute,比如上面的A、B兩個元素,如果兩個元素都設(shè)置了top、right、bottom、left,對于元素B來說,其位置偏移的參考點是元素A偏移后的位置,不是元素A的原位置,同樣,如果元素B有margin,其參考點也是元素A偏移后的位置,這點很重要,這才是absolute的概念(演示)。
=======================================================
用Div+CSS進行網(wǎng)站布局時,做一些浮動層等特殊特殊效果時要考慮到定位問題。這就要用到Position屬性等。 Position屬性有四個值: static、fixed、absolute和relative,后面兩個在布局中的定位里是經(jīng)常用到的,顧名思義,absolute是指絕對定位,即將對象從文檔流中拖出,使用left,right,top,bottom等屬性進行絕對定位,而其層疊通過z-index屬性定義。此時對象不具有邊距,但仍有補白和邊框。ralative是指相對定位,就是依據(jù)left,right,top,bottom等屬性在正常文檔流中偏移位置。
但是,怎么個絕對法,又怎么個相對法呢?以前我一直沒有仔細去研究它,到具體應用時有時會有點迷糊,我相信很多朋友也會有這樣的問題。今天我特意測試了一下,得出了以下結(jié)論:
1、當Position屬性值為Relative時
對象原來占有的位置保留,其后面的對象按原來文檔流仍然保持原來的位置
Top的值表示對象相對原位置向下偏移的距離
bottom的值表示對象相對原位置向上偏移的距離
兩者同時存在時,只有Top起作用。
left的值表示對象相對原位置向右偏移的距離
right的值表示對象相對原位置向左偏移的距離
兩者同時存在時,只有l(wèi)eft起作用。
2、當Position屬性值為absolute時
對象從文檔流中抽取出來,原占有的位置被后面的對象頂替上來
Top的值表示對象上邊框與瀏覽器窗口頂部的距離
bottom的值表示對象下邊框與瀏覽器窗口底部的距離
兩者同時存在時,只有Top起作用;如果兩者都未指定,則其頂端將與原文檔流位置一致,即垂直保持位置不變。
left的值表示對象左邊框與瀏覽器窗口左邊的距離
right的值表示對象右邊框與瀏覽器窗口右邊的距離
兩者同時存在時,只有l(wèi)eft起作用;如果兩者都未指定,則其左邊將與原文檔流位置一致,即水平保持位置不變。
在Position屬性值為absolute的同時,如果有一級父對象(無論是父對象還是祖父對象,或者再高的輩分,一樣)的Position屬性值為Relative時,則上述的相對瀏覽器窗口定位將會變成相對父對象定位,這對精確定位是很有幫助的。
轉(zhuǎn)載于:https://www.cnblogs.com/osmond/archive/2011/12/11/2283710.html
總結(jié)
以上是生活随笔為你收集整理的深入理解position:relative 与 position:absolute(divb相对于diva进行绝对定位)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 总结Movies MVC3教程示例的知识
- 下一篇: 设置c#windows服务描述及允许服务