簡介
前面寫了一篇文章講解了position常用的幾個屬性:《CSS基礎篇-- position屬性講解》
一般都知道下面幾個常用的:
| {position: static;position: relative;position: absolute;position: fixed;} | 
在https://developer.mozilla.org/zh-CN/docs/Web/CSS/position還說了下面這三個值:
| /* 全局值 */position: inherit;position: initial;position: unset; | 
估計大部分都沒有用過position:sticky吧。這個屬性值還在試驗階段。怎樣描述它呢?
初窺 position:sticky
sticky 英文字面意思是粘,粘貼,所以姑且稱之為粘性定位。下面就來了解下這個處于實驗性的取值的具體功能及實用場景。
這是一個結合了 position:relative 和 position:fixed 兩種定位功能于一體的特殊定位,適用于一些特殊場景。
什么是結合兩種定位功能于一體呢?
元素先按照普通文檔流定位,然后相對于該元素在流中的 flow root(BFC)和 containing block(最近的塊級祖先元素)定位。
而后,元素定位表現為在跨越特定閾值前為相對定位,之后為固定定位。
這個特定閾值指的是 top, right, bottom 或 left 之一,換言之,指定 top, right, bottom 或 left 四個閾值其中之一,才可使粘性定位生效。否則其行為與相對定位相同。
sticky:對象在常態時遵循常規流。它就像是relative和fixed的合體,當在屏幕中時按常規流排版,當卷動到屏幕外時則表現如fixed。該屬性的表現是現實中你見到的吸附效果。
常用場景:當元素距離頁面視口(Viewport,也就是fixed定位的參照)頂部距離大于 0px 時,元素以 relative 定位表現,而當元素距離頁面視口小于 0px 時,元素表現為 fixed 定位,也就會固定在頂部。
代碼:
| { position: -webkit-sticky; position: sticky; top: 0;} | 
如下圖表現方式:
距離頁面頂部大于20px,表現為 position:relative;

距離頁面頂部小于20px,表現為 position:fixed;

運用 position:sticky 實現頭部導航欄固定
html代碼:
| <div class="con"> <div class="samecon"> <h2>標題一</h2> <p>這是一段文本</p> <p>這是一段文本</p> <p>這是一段文本</p> </div> <div class="samecon"> <h2>標題二</h2> <p>這是一段文本</p> <p>這是一段文本</p> <p>這是一段文本</p> </div> <div class="samecon"> <h2>標題三</h2> <p>這是一段文本</p> <p>這是一段文本</p> <p>這是一段文本</p> </div> <div class="samecon"> <h2>標題四</h2> <p>這是一段文本</p> <p>這是一段文本</p> <p>這是一段文本</p> </div> <div class="samecon"> <h2>標題五</h2> <p>這是一段文本</p> <p>這是一段文本</p> <p>這是一段文本</p> </div> <div class="samecon"> <h2>標題五六</h2> <p>這是一段文本</p> <p>這是一段文本</p> <p>這是一段文本</p> </div></div> |