国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > CSS > 正文

CSS使用position:sticky 實現粘性布局的方法

2024-07-11 08:58:58
字體:
來源:轉載
供稿:網友

簡介

前面寫了一篇文章講解了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:對象在常態時遵循常規流。它就像是relativefixed的合體,當在屏幕中時按常規流排版,當卷動到屏幕外時則表現如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>

CSS代碼:

.samecon h2{    position: -webkit-sticky;    position: sticky;    top: 0;    background:#ccc;    padding:10px 0;}

同理,也可以實現側邊導航欄的超出固定。

生效規則

  • 須指定 top, right, bottom 或 left 四個閾值其中之一,才可使粘性定位生效。否則其行為與相對定位相同。
    • 并且 top bottom 同時設置時,top 生效的優先級高,left right 同時設置時,left 的優先級高。
  • 設定為 position:sticky 元素的任意父節點的 overflow 屬性必須是 visible,否則 position:sticky 不會生效。這里需要解釋一下:
    • 如果 position:sticky 元素的任意父節點定位設置為 overflow:hidden,則父容器無法進行滾動,所以 position:sticky 元素也不會有滾動然后固定的情況。
    • 如果 position:sticky 元素的任意父節點定位設置為 position:relative | absolute | fixed,則元素相對父元素進行定位,而不會相對 viewprot 定位。
  • 達到設定的閥值。這個還算好理解,也就是設定了 position:sticky 的元素表現為 relative 還是 fixed 是根據元素是否達到設定了的閾值決定的。兼容性

這個屬性的兼容性還不是很好,目前仍是一個試驗性的屬性,并不是W3C推薦的標準。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宜良县| 桑植县| 根河市| 台北市| 辉南县| 临湘市| 库车县| 连南| 竹溪县| 五大连池市| 突泉县| 阳泉市| 邢台县| 寿光市| 页游| 舟曲县| 石门县| 沁水县| 上杭县| 毕节市| 张家口市| 宝兴县| 西安市| 铜陵市| 永顺县| 临城县| 南京市| 凌云县| 昂仁县| 天长市| 平度市| 扎兰屯市| 石楼县| 武鸣县| 灌云县| 饶阳县| 松溪县| 金昌市| 苍梧县| 建昌县| 织金县|