深入理解position sticky 粘性定位

粘性定位可以簡單理解為relativefixed布局的混合。

基本概念

  • 流盒

    指的是粘性定位元素最近的可滾動(dòng)元素(overflow屬性值不是visible的元素)的尺寸盒子,如果沒有可滾動(dòng)元素,則表示瀏覽器視窗盒子。

  • 粘性約束矩形

    即粘性布局元素的父級(jí)元素矩形

特性

  • 當(dāng)粘性約束矩形在可視范圍內(nèi)為relative,反之,則為fixed
  • 粘性定位元素如果和它的父元素一樣高,則垂直滾動(dòng)的時(shí)候,粘性定位效果是不會(huì)出現(xiàn)的
  • 它的定位效果完全受限于父級(jí)元素們。如果父元素的overflow屬性設(shè)置了scrollauto,overlay值,那么,粘性定位將會(huì)失效
  • 同一容器中多個(gè)粘貼定位元素獨(dú)立偏移,因此可能重疊;位置上下靠在一起的不同容器中的粘貼定位元素則會(huì)鳩占鵲巢,擠開原來的元素,形成依次占位的效果。

案例

  • 案例一(了解流盒以及粘性約束矩形)
<body>
    <div>
        <nav>導(dǎo)航</nav>
    </div>
</body>
body{
    height: 2000px;
    width: 100%;
    background-color: red;
}
div {
    height: 200px;
    margin-top: 50px;
    border: solid deepskyblue;
    width: 400px;
    background-color: deepskyblue;
}
nav {
    position: sticky;
    top: 20px;
    background: yellow;
    height: 60px;
    line-height: 60px;
}
image

所以,如果粘性定位元素的高度如果和粘性定位的父元素高度相等的話,粘性定位元素在粘性約束矩形中將會(huì)沒有實(shí)現(xiàn)粘性效果的活動(dòng)空間,隨著粘性約束矩形消失在可視范圍內(nèi)時(shí),粘性定位元素也將會(huì)一同消失在可視范圍內(nèi),也就是所謂的失效效果。

  • 案例二(多元素粘性效果)
<body>
    <div>
        <nav>導(dǎo)航</nav>
        <header>頭部</header>
    </div>
</body>
body{
    height: 2000px;
    width: 100%;
    background-color: red;
}
div {
    height: 200px;
    margin-top: 50px;
    border: solid deepskyblue;
    width: 400px;
    background-color: deepskyblue;
}
nav {
    position: sticky;
    top: 20px;
    background: yellow;
    height: 60px;
    line-height: 60px;
}
header {
    position: sticky;
    top: 20px;
    background: green;
    height: 60px;
    line-height: 60px;
    display: block;
}
image

可以看到當(dāng)一個(gè)父元素內(nèi)有兩個(gè)粘性元素時(shí),后面的粘性元素隨著滾動(dòng)會(huì)覆蓋前面的粘性元素。

但是,如果給黃色導(dǎo)航設(shè)置z-index:20,綠色頭部設(shè)置z-index:19,那么,黃色將會(huì)覆蓋綠色,而不是本來的后來居上的效果。畢竟,當(dāng)出現(xiàn)粘性效果的時(shí)候,此時(shí)元素的效果相當(dāng)position:fixedz-index會(huì)生效。

本文參考:

https://www.zhangxinxu.com/wordpress/2018/12/css-position-sticky/
https://www.zhangxinxu.com/wordpress/2020/03/position-sticky-rules/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容