這篇文章給大家分享的是有關css粘性定位position:sticky的示例分析的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
創(chuàng)新互聯(lián)是一家專注于成都網(wǎng)站建設、做網(wǎng)站與策劃設計,華坪網(wǎng)站建設哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設10多年,網(wǎng)設計領域的專業(yè)建站公司;建站業(yè)務涵蓋:華坪等地區(qū)。華坪做網(wǎng)站價格咨詢:18980820575
使用:
#sticky-nav { position: sticky; top: 100px; }
設置position:sticky同時給一個(top,bottom,right,left)之一即可
使用條件:
1、父元素不能overflow:hidden或者overflow:auto屬性。
2、必須指定top、bottom、left、right4個值之一,否則只會處于相對定位
3、父元素的高度不能低于sticky元素的高度
4、sticky元素僅在其父元素內生效
例子:css代碼:
* { margin: 0; padding: 0 } html body { height: 100vh; width: 100% } h2 { height: 200px; position: relative; background-color: lightblue; } h2:after { content: ''; position: absolute; top: 100px; left: 0; width: 100%; height: 2px; background-color: red; } #sticky-nav { position: sticky; /*position: absolute;* left: 0;*/ top: 100px; width: 100%; height: 80px; background-color: yellowgreen; } .scroll-container { height: 600px; width: 100%; background-color: lightgrey; }
html代碼:
高200px;距頂部100px
這是一個tab切換欄,給sticky定位top=100px發(fā)生滾動
發(fā)生滾動
項目中遇到的坑:
先來看看各大內核對position:sticky的支持情況
問題描述:
在一個小程序開發(fā)項目中;tabs組件使用了粘性定位,其中有tab欄的切換;tab欄底部是大段列表內容list-container內容的展示;其中展示內容有click事件(或者說是touch事件);ios以及pc瀏覽器中對點擊的測試是正常的;但在安卓手機中?。。?!我的天,點擊穿透了!!并且,嘗試去掉list-container中的item的點擊跳轉,發(fā)現(xiàn)tab切換的點擊沒有了反應,事件消失了?。?!
設置斷點,查看事件流的走向:首先事件捕獲-->目標節(jié)點tab-->事件冒泡;這個泡居然冒到了container-list中的item。。。簡直噩夢大致的項目結構:
html結構:
這是tab切換
解決辦法:
1.在使用組件庫的tab時,外層套一個div,防止點擊穿透和不正常的事件流走向或者(一個治標不治本的方法,具體看業(yè)務場景)
2.組件庫的樣式無法改,sticky作為tab組件的行內樣式,因為我使用這個tab時是直接在viewpoint的頂部的,這是完全可以用fixed達到效果。我在調用類的外部設置了position:fixed !import;樣式最高優(yōu)先級去覆蓋了組件庫中的定位樣式,就正常了。
一點想法:
position:sticky對安卓的兼容簡直讓人想哭,目前手機端的用戶非常多,要做到兼顧,由于安卓系統(tǒng)對sticky粘性定位的慘淡支持;如果業(yè)務場景可以用其它定位解決,那就還是不要用sticky吧。
感謝各位的閱讀!關于“css粘性定位position:sticky的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!