position:relative 与 position:absolute
position 有三個(gè)值,static(靜態(tài))、relative(相對(duì))、absolute(絕對(duì));由于static是所有頁面元素的默認(rèn)值,因此設(shè)置元素的定位類型時(shí)幾乎不用這個(gè)值,除非用于覆蓋之前的定義。對(duì)于后兩者,一般應(yīng)用:在一個(gè)相對(duì)定位的元素里面放置一個(gè)絕對(duì)定位的元素,如圖:
子元素B可以通過top、right、bottom、left來精確定位,定位的參考目標(biāo)就是其具有相對(duì)定位屬性的父級(jí)元素A;并且設(shè)置這些偏移后,產(chǎn)生的空隙會(huì)被后面的元素填充(如果后面的元素足夠尺寸的話)。由于B元素具有absolute定位屬性,相當(dāng)于從文檔流中抽取出來,浮動(dòng)在原平面排版上,形成"層",如果有多個(gè)"層",層與層之間就必然會(huì)有誰覆蓋誰,誰在上誰在下的競(jìng)爭(zhēng)關(guān)系,因此,為解決這個(gè)競(jìng)爭(zhēng),就產(chǎn)生了 z-index(空間坐標(biāo)系的Z軸) 屬性,誰的值大,誰就在上面。另外,如果父級(jí)元素A沒有設(shè)置relative,那么B元素就會(huì)以body標(biāo)簽當(dāng)作參考點(diǎn)。
對(duì)于具有position:relative屬性的元素A,其top、right、bottom、left四個(gè)方向的位置偏移就會(huì)以該元素的原來位置作為參考點(diǎn),而不是像上面說的,以具有relative定位屬性的父級(jí)元素或body作為參考點(diǎn)。在設(shè)置了偏移后產(chǎn)生了空隙,其周圍的元素并不會(huì)填充這些空隙,即使它們足夠尺寸。值得注意的是,此時(shí)元素A的margin,margin將作用于該元素的原來位置,由于原位置產(chǎn)生偏移,該元素的最終位置將是margin與top、right、bottom、left共同作用后的位置,并且其周圍元素的位置也將產(chǎn)生影響。
回過頭來再看看 relative 里面的 absolute,比如上面的A、B兩個(gè)元素,如果兩個(gè)元素都設(shè)置了top、right、bottom、left,對(duì)于元素B來說,其位置偏移的參考點(diǎn)是元素A偏移后的位置,不是元素A的原位置,同樣,如果元素B有margin,其參考點(diǎn)也是元素A偏移后的位置,這點(diǎn)很重要,這才是absolute的概念。
總結(jié)
以上是生活随笔為你收集整理的position:relative 与 position:absolute的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ASP.NET基础教程-Web 自定义控
- 下一篇: **版权说明**