欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解css粘性定位position:sticky問題采坑

  發(fā)布時間:2019-08-26 14:58:24   作者:小bearBear   我要評論
這篇文章主要介紹了詳解css粘性定位position:sticky問題采坑的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

前言:position:sticky是css定位新增屬性;可以說是相對定位relative和固定定位fixed的結(jié)合;它主要用在對scroll事件的監(jiān)聽上;簡單來說,在滑動過程中,某個元素距離其父元素的距離達(dá)到sticky粘性定位的要求時(比如top:100px);position:sticky這時的效果相當(dāng)于fixed定位,固定到適當(dāng)位置。

使用:

#sticky-nav {
position: sticky;
top: 100px;
}

設(shè)置position:sticky同時給一個(top,bottom,right,left)之一即可

使用條件:

1、父元素不能overflow:hidden或者overflow:auto屬性。

2、必須指定top、bottom、left、right4個值之一,否則只會處于相對定位

3、父元素的高度不能低于sticky元素的高度

4、sticky元素僅在其父元素內(nèi)生效

例子:css代碼:

* {
            margin: 0;
            padding: 0
        }
        
        html body {
            height: 100vh;
            width: 100%
        }
        
        h1 {
            height: 200px;
            position: relative;
            background-color: lightblue;
        }
        
        h1: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代碼:

<h1>高200px;距頂部100px</h1>
    <div id="sticky-nav">這是一個tab切換欄,給sticky定位top=100px</div>
    <p class="scroll-container">發(fā)生滾動</p>
    <p class="scroll-container" style="background:lightgoldenrodyellow;">發(fā)生滾動</p>

項目中遇到的坑:

先來看看各大內(nèi)核對position:sticky的支持情況

問題描述:

在一個小程序開發(fā)項目中;tabs組件使用了粘性定位,其中有tab欄的切換;tab欄底部是大段列表內(nèi)容list-container內(nèi)容的展示;其中展示內(nèi)容有click事件(或者說是touch事件);ios以及pc瀏覽器中對點(diǎn)擊的測試是正常的;但在安卓手機(jī)中!?。?!我的天,點(diǎn)擊穿透了??!并且,嘗試去掉list-container中的item的點(diǎn)擊跳轉(zhuǎn),發(fā)現(xiàn)tab切換的點(diǎn)擊沒有了反應(yīng),事件消失了?。?!

設(shè)置斷點(diǎn),查看事件流的走向:首先事件捕獲-->目標(biāo)節(jié)點(diǎn)tab-->事件冒泡;這個泡居然冒到了container-list中的item。。。簡直噩夢大致的項目結(jié)構(gòu):

html結(jié)構(gòu):

<div class="service-wrap">
        <tab>這是tab切換</tab>
        <div class="list-container">
            <!--for循環(huán)有很多item-->
            <item></item>
            <item></item>
        </div>
    </div>

解決辦法:

1.在使用組件庫的tab時,外層套一個div,防止點(diǎn)擊穿透和不正常的事件流走向或者(一個治標(biāo)不治本的方法,具體看業(yè)務(wù)場景)

2.組件庫的樣式無法改,sticky作為tab組件的行內(nèi)樣式,因為我使用這個tab時是直接在viewpoint的頂部的,這是完全可以用fixed達(dá)到效果。我在調(diào)用類的外部設(shè)置了position:fixed !import;樣式最高優(yōu)先級去覆蓋了組件庫中的定位樣式,就正常了。

一點(diǎn)想法:

position:sticky對安卓的兼容簡直讓人想哭,目前手機(jī)端的用戶非常多,要做到兼顧,由于安卓系統(tǒng)對sticky粘性定位的慘淡支持;如果業(yè)務(wù)場景可以用其它定位解決,那就還是不要用sticky吧。。。。留下心酸的淚水。。。。

ps:有別的解決方法,歡迎大家告知,謝謝。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • position:sticky 粘性定位的幾種巧妙應(yīng)用詳解

    這篇文章主要介紹了position:sticky 粘性定位的幾種巧妙應(yīng)用詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小
    2021-04-23
  • CSS中Position:Sticky不起作用的問題解決

    本文主要介紹了CSS中Position:Sticky不起作用的問題解決,包含了5種不生效的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的
    2024-02-18
  • 用position:sticky完美解決小程序吸頂問題的實現(xiàn)方法

    這篇文章主要介紹了用position:sticky完美解決小程序吸頂問題的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下
    2021-04-23
  • CSS使用position:sticky 實現(xiàn)粘性布局的方法

    這篇文章主要介紹了CSS使用position:sticky 實現(xiàn)粘性布局的方法的相關(guān)資料,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-31
  • position:sticky用法介紹及瀏覽器兼容性

    用戶的屏幕越來越大,而頁面太寬的話會不宜閱讀,所以絕大部分網(wǎng)站的主體寬度和之前相比沒有太大的變化,于是瀏覽器中就有越來越多的空白區(qū)域,所以你可能注意到很多網(wǎng)站開
    2012-12-25
  • css中position:sticky 粘性定位詳解

    粘性定位的元素是依賴于用戶的滾動,在position:relative與position:fixed定位之間切換,這篇文章給大家介紹css中position:sticky 粘性定位的相關(guān)知識,感興趣的朋友跟隨小
    2024-02-28

最新評論