CSS基礎篇--使用position:sticky 實現粘性布局,基礎篇sticky

來源:互聯網
上載者:User

CSS基礎篇--使用position:sticky 實現粘性布局,基礎篇sticky
簡介

前面寫了一篇文章講解了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吧。這個屬性值還在實驗階段。怎樣描述它呢?

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推薦的標準。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.