詳解 CSS 屬性 - position

postion 屬性定義了一個元素在頁面佈局中的位置以及對周圍元素的影響。該屬性共有5個值:css

  • position: absolute
  • position: relative
  • position: fixed
  • position: static
  • position: inherit

本文主要詳細討論 position 屬性的前三個值,首先大概講解下後兩個值:segmentfault

static

staticposition 屬性的默認值,static 元素會遵循正常的文檔流,且會忽略 top,bottom,left,right 等屬性。佈局

inherit

inherit 值如同其餘 css 屬性的 inherit 值,即繼承父元素的 position 值。post

absolute

absolute 元素將會脫離正常的文檔流,因此 其周圍的元素將會忽略它的存在。如同 absolute 元素的 display 屬性被設爲了 none 同樣。此時,咱們可使用 top,bottom,left,right 等屬性對 absolute 元素進行絕對定位。通常狀況下定義兩個屬性,topbottom,leftright
這個絕對定位須要稍微理解下,由於這裏容易與 relative 產生混淆。
例如,當對 absolute 元素添加 left:10px 定位後,這個 left 到底是對哪一個元素而言呢?其實,此時將會往上查找 absolute 元素的第一個父元素,若是該父元素的 position 值存在且不爲 static),那麼這個 left:10px 就是根據該父元素進行的定位,不然將會繼續查找該父元素的父元素,一直追溯到某個父元素具有不爲 staticposition 值爲止,若是不存在知足條件的父元素,則會根據最外層的 window 進行定位。spa

<div style="position: absolute">Im an absolute element</div>
<div>Im a default element</div>

請輸入圖片描述//直接忽略 absolute 元素的存在code

relative

relative 元素遵循正常的文檔流,因此周圍元素不會忽略它的存在,relative 元素一樣支持 top,bottom,left,right 等屬性。當咱們使用 top,bottom,left,right等屬性對 relative 元素進行相對定位時的效果有點相似於 margin 屬性達到的效果,可是區別在於, relative 元素周圍的元素將會忽略 relative 元素的移動。咱們注意,當 relative 元素未使用定位屬性進行相對定位時,它不會被周圍的元素忽略,但利用定位屬性進行定位後,周圍的元素會忽略 relative 元素的移動,它們會認爲 relative 元素仍然在原來的位置,並未進行移動,咱們用個例子來講明:繼承

<div style="position: relative">Im a relative element</div>
<div>Im a default element</div>

請輸入圖片描述//並未忽略 relative 元素的存在seo

<div style="position: relative;top:10px">Im a relative element</div>
<div>Im a default element</div>

請輸入圖片描述//忽略了 relative 元素的移動圖片

fixed

fixed 元素將會脫離正常的文檔流,因此它與 absolute 元素很類似,一樣會被周圍元素忽略,支持 top,bottom,left,right 屬性,但二者仍有很大不一樣。
首先,fixed 元素定位與它的父元素無任何關係,它永遠是相對最外層的 window 進行定位的。
第二,fixed 元素正如它的名字同樣,它是固定在屏幕的某個位置,它不會由於屏幕的滾動而消失。element

<div style="height:1000px">
  <div style="position: absolute;">Im an absolute element</div>
  <div style="position: fixed;">Im a fixed element</div>
  <div>Im a default element</div>
</div>

請輸入圖片描述//如同 absolute,fixed元素也被周圍元素忽略

由於外層 div 高度超過一屏,因此如今咱們往下滾動屏幕。

請輸入圖片描述//只有 fixed 元素未由於屏幕滾動而消失,由於它是「固定」的

z-index

爲何要在這裏提到 z-index 屬性呢?那是由於 z-index 屬性只對定位元素有效,即 position 值爲 absolute,relative,fixed 時纔有效。咱們首先了解下什麼叫 z-index

      請輸入圖片描述

從上圖咱們不難發現 z-index 值表明的是元素的堆疊順序,值越高則顯示順序越優先。

<div style="position: absolute;z-index:1">Im an absolute element</div>
<div style="position: fixed;z-index:2">Im a fixed element</div>

請輸入圖片描述//fixed 元素 z-index 比 absoulute 元素高,因此顯示在前面

(我把背景色調爲非透明,這樣能夠看得更清楚),假如 z-index 值相同會出現什麼狀況呢?

<div style="position: absolute;z-index:1">Im an absolute element</div>
<div style="position: fixed;z-index:1">Im a fixed element</div>

請輸入圖片描述//z-index 值相同,仍然顯示爲 fixed 元素

因此咱們知道,當 z-index 值相同時,後加載的元素顯示優先。

參考

http://www.vanseodesign.com/css/css-positioning/

相關文章
相關標籤/搜索