摘要:屬性定義了一個元素在頁面布局中的位置以及對周圍元素的影響。元素將會脫離正常的文檔流,所以其周圍的元素將會忽略它的存在。此時,我們可以使用等屬性對元素進(jìn)行絕對定位。一般情況下定義兩個屬性,或或。
postion 屬性定義了一個元素在頁面布局中的位置以及對周圍元素的影響。該屬性共有5個值:
position: absolute
position: relative
position: fixed
position: static
position: inherit
本文主要詳細(xì)討論 position 屬性的前三個值,首先大概講解下后兩個值:
staticstatic 為 position 屬性的默認(rèn)值,static 元素會遵循正常的文檔流,且會忽略 top,bottom,left,right 等屬性。
inheritinherit 值如同其他 css 屬性的 inherit 值,即繼承父元素的 position 值。
absoluteabsolute 元素將會脫離正常的文檔流,所以 其周圍的元素將會忽略它的存在。如同 absolute 元素的 display 屬性被設(shè)為了 none 一樣。此時,我們可以使用 top,bottom,left,right 等屬性對 absolute 元素進(jìn)行絕對定位。一般情況下定義兩個屬性,top 或 bottom,left 或 right。
這個絕對定位需要稍微理解下,因為這里容易與 relative 產(chǎn)生混淆。
例如,當(dāng)對 absolute 元素添加 left:10px 定位后,這個 left 究竟是對哪個元素而言呢?其實,此時將會往上查找 absolute 元素的第一個父元素,如果該父元素的 position 值存在(且不為 static),那么這個 left:10px 就是根據(jù)該父元素進(jìn)行的定位,否則將會繼續(xù)查找該父元素的父元素,一直追溯到某個父元素具備不為 static 的 position 值為止,如果不存在滿足條件的父元素,則會根據(jù)最外層的 window 進(jìn)行定位。
Im an absolute elementIm a default element
//直接忽略 absolute 元素的存在
relativerelative 元素遵循正常的文檔流,所以周圍元素不會忽略它的存在,relative 元素同樣支持 top,bottom,left,right 等屬性。當(dāng)我們使用 top,bottom,left,right等屬性對 relative 元素進(jìn)行相對定位時的效果有點類似于 margin 屬性達(dá)到的效果,但是區(qū)別在于, relative 元素周圍的元素將會忽略 relative 元素的移動。我們注意,當(dāng) relative 元素未使用定位屬性進(jìn)行相對定位時,它不會被周圍的元素忽略,但利用定位屬性進(jìn)行定位后,周圍的元素會忽略 relative 元素的移動,它們會認(rèn)為 relative 元素仍然在原來的位置,并未進(jìn)行移動,我們用個例子來說明:
Im a relative elementIm a default element
//并未忽略 relative 元素的存在
Im a relative elementIm a default element
//忽略了 relative 元素的移動
fixedfixed 元素將會脫離正常的文檔流,所以它與 absolute 元素很相似,同樣會被周圍元素忽略,支持 top,bottom,left,right 屬性,但兩者仍有很大不同。
首先,fixed 元素定位與它的父元素?zé)o任何關(guān)系,它永遠(yuǎn)是相對最外層的 window 進(jìn)行定位的。
第二,fixed 元素正如它的名字一樣,它是固定在屏幕的某個位置,它不會因為屏幕的滾動而消失。
Im an absolute elementIm a fixed elementIm a default element
//如同 absolute,fixed元素也被周圍元素忽略
因為外層 div 高度超過一屏,所以現(xiàn)在我們往下滾動屏幕。
//只有 fixed 元素未因為屏幕滾動而消失,因為它是“固定”的
z-index為什么要在這里提到 z-index 屬性呢?那是因為 z-index 屬性只對定位元素有效,即 position 值為 absolute,relative,fixed 時才有效。我們首先了解下什么叫 z-index。
從上圖我們不難發(fā)現(xiàn) z-index 值代表的是元素的堆疊順序,值越高則顯示順序越優(yōu)先。
Im an absolute elementIm a fixed element
//fixed 元素 z-index 比 absoulute 元素高,所以顯示在前面
(我把背景色調(diào)為非透明,這樣可以看得更清楚),假如 z-index 值相同會出現(xiàn)什么情況呢?
Im an absolute elementIm a fixed element
//z-index 值相同,仍然顯示為 fixed 元素
所以我們知道,當(dāng) z-index 值相同時,后加載的元素顯示優(yōu)先。
參考http://www.vanseodesign.com/css/css-positioning/
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/49475.html