position(定位屬性)


Position

 CSS position屬性用於指定一個元素在文檔中的定位方式。toprightbottom 和 left 屬性則決定了該元素的最終位置。

在分析position元素定位之前,先來說說什么是文檔流?(自我理解)

瀏覽器在默認情況下規定一個塊元素在父元素內排列規則:

  1. 元素從上到下、從左到右排列
  2. 一個塊級元素獨占一行
  3. 行內元素不會獨占一行
  4.  浮動元素在一行排不下則換行繼續浮動

position 屬性的五個值:

  • static
  • relative
  • absolute
  • fixed
  • sticky

一、static(默認值)

 該關鍵字指定元素使用 正常 的布局行為,即元素在文檔常規流中當前的布局位置。此時 toprightbottomleft 和 z-index 屬性無效

二、relative

relative:相對定位

 該關鍵字下,元素先放置在未添加定位時的位置,再在不改變頁面布局的前提下調整元素位置(因此會在此元素未添加定位時所在位置留下空白)。position:relative 對 table-*-group, table-row, table-column, table-cell, table-caption 元素無效

 語法:

div{
    position:relative;
}

特點:

1. 參照相對沒有定位前的自己

2. 有層級,后來居上-- 層級高

3. 占據自己原來的位置--在原來的文檔流當中存在自己的位置

4. 不會改變元素的特征,行內還是行內,塊級還是塊級

5. 支持margin、padding、margin:auto

6. 不脫離文檔流

三、absolute

absolute:絕對定位

元素會被移出正常文檔流(脫離文檔流),並不為元素預留空間,通過指定元素相對於最近的非 static 定位祖先元素的偏移,來確定元素位置。絕對定位的元素可以設置外邊距(margins),且不會與其他邊距合並。

語法:

div{
  position:absolute
}

特點:

1. 脫離文檔流

2. 提升層級不占原來的位置,后來者居上

3. 不支持margin:auto,支持margin

4. 參照物:默認參照body,絕對定位的元素位置相對於最近的 已定位 的祖先元素

5. 行內元素支持寬高,塊級元素內容撐開寬高改變元素特性

6. 一般配合相對定位使用-- 父相子絕 

四、fixed

fixed:固定定位

元素會被移出正常文檔流,並不為元素預留空間,而是通過指定元素相對於屏幕視口(viewport)的位置來指定元素位置。元素的位置在屏幕滾動時不會改變。

語法:

div{
  position:fixed  
}

特點:

1.參照物:相對 瀏覽器窗口 定位

2.脫離文檔流,提升層級

3.不支持margin:auto

4.可以改變元素特性,行內->塊級

五、sticky

sticky:粘性定位(基於用戶的滾動位置來定位)

元素根據正常文檔流進行定位,然后相對它的最近滾動祖先包括table-related元素,基於toprightbottom, 和 left的值進行偏移。偏移值不會影響任何其他元素的位置。

粘性定位的元素是依賴於用戶的滾動,在 position:relative 與 position:fixed 定位之間切換,表現為在跨越特定閾值前為相對定位,之后為固定定位。

注意:只有指定 top, right, bottom 或 left 四個閾值其中之一,才可使粘性定位生效。否則其行為與相對定位相同。

語法:

div.sticky {
  position: -webkit-sticky;
  position: sticky;
  top: 0;
}

---層級關系(z-index)

因為元素的定位與文檔流無關,所以它們可以覆蓋頁面上的其它元素,這里 z-index 屬性指定了一個元素的堆疊順序(哪個元素應該放在前面,或后面)

  1. z-index--可以調換兩個層的上下位置關系

  2. 值可為正也可為 值越大越在上面默認為0

  3. 只能 同級元素對比

  4. z-index 只對 定位的元素有效,其他元素均無效

{
    position:absolute;
    left:0px;
    top:0px;
    z-index:-1; /* 置於底層 */
}

 

參考文檔:

https://developer.mozilla.org/zh-CN/docs/Web/CSS/position 

https://www.runoob.com/css/css-positioning.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM