微信小程序分類菜單激活狀態跟隨列表滾動自動切換



    在這里插入圖片描述
    這里主要用到微信小程序提供的SelectorQuery獲取頁面節點信息實現,組件用的是微信小程序的scroll-view
    邏輯就是獲取右側盒子的節點信息,獲取右側子分類的節點信息,當子分類滑動到頂部的之后,則切換左側分類狀態,而且當右側子分類的位置處于觸頂以及包含頂部位置的狀態下,同樣激活左側分類狀態。愛掏網 - it200.com


    view結構

    左側父級分類

    scroll-view
    class="left"
    scroll-y
    >

    view
    class="{{item.id == active ? 'left_current left_box' : 'left_box'}}"
    wx:for="{{leftData}}"
    wx:key="index"
    bindtap="leftClick"
    data-id="{{item.id}}"
    >
    {{item.catName}}view>
    scroll-view>

    右側子分類

    scroll-view
    class="right"
    scroll-y
    scroll-into-view="{{'chunk'+ activeClassifyId}}"
    scroll-with-animation
    bindscroll="scroll"
    >

    view
    class="right_box"
    wx:for="{{rightData}}"
    wx:key="index"
    id="{{'chunk'+ item.id}}"
    >

    view class="right_title">{{item.name}}view>
    view class="right_innerBox" wx:for-item="item2" wx:for="{{item.list}}" wx:key="index2" >

    view>{{item2.name}}view>
    view>
    view>
    scroll-view>

    css的部分大家自己按照需求寫即可。愛掏網 - it200.com


    js部分

    data:{
    // ...數據...
    active:'', // 左側分類激活
    activeClassifyId :'' // 滾動定位的id
    }
    // 左側分類點擊
    leftClick(e){
    // 當前分類id
    let { id } = e.currentTarget.dataset
    this.setData({
    active:id, // 左側激活的id
    activeClassifyId : id // 分類定位的id
    })
    // activeClassifyId分類定位的id不應該和左側激活的id是同一個,否則左側激活會在下面的滾動事件內持續觸發,導致無法滾動。愛掏網 - it200.com
    },
    // 右側滾動觸發
    scroll(){
    let { rightData } = this.data
    rightData.map(item=>{
    if(item.list.length>0){
    // 返回一個 SelectorQuery 對象實例。愛掏網 - it200.com獲取頁面的節點信息。愛掏網 - it200.com
    const query = wx.createSelectorQuery()
    query.select('#chunk'+item.id) // 獲取id為chunkID的元素
    .boundingClientRect(ref=>{ // 獲取節點寬高信息和位置信息
    // 如果當前的子分類滾動到了頂部以及當前子分類正處于頂部的位置
    if(0>ref.top&&ref.top>(ref.height*-1)){
    this.setData({active :item.id}) // 切換左側父分類的高亮
    }
    }).exec()
    }
    })
    },

    屬性解釋:

    scroll-with-animation:在設置滾動條位置時使用動畫過渡
    scroll-into-view:值應為某子元素id(id不能以數字開頭)。愛掏網 - it200.com設置哪個方向可滾動,則在哪個方向滾動到該元素
    bindscroll:滾動時觸發的事件event.detail = {scrollLeft, scrollTop, scrollHeight, scrollWidth, deltaX, deltaY}
    createSelectorQuery:返回一個 SelectorQuery 對象實例。愛掏網 - it200.com獲取頁面的節點信息。愛掏網 - it200.com
    select:獲取id的元素
    boundingClientRect:獲取節點寬高信息和位置信息


    說明

    此處用到的是scroll-into-view根據子分類的id動態定位到右側子分類位置,右側子分類在滾動的時候,會判斷條件,如果當前子分類展示的這一欄觸頂或者處于正在展示的位置(包含頂部),更新父級分類。愛掏網 - it200.com


    注意

    左側分類的高亮active不能和滾動定位的activeClassifyId共用,否則右側滾動的時候會持續更新active導致右側無法滾動,activeClassifyId只需要在左側父級分類點擊的時候更新即可。愛掏網 - it200.com







    聲明:所有內容來自互聯網搜索結果,不保證100%準確性,僅供參考。如若本站內容侵犯了原著者的合法權益,可聯系我們進行處理。
    發表評論
    更多 網友評論0 條評論)
    暫無評論

    返回頂部

    主站蜘蛛池模板: 亚洲Av无码一区二区二三区| 亚洲大尺度无码无码专线一区 | 国产麻豆媒一区一区二区三区 | 精品一区二区三区视频| 国产一区三区三区| 成人精品一区二区三区中文字幕| 日韩视频在线观看一区二区| 国产免费一区二区三区不卡 | 无码人妻精品一区二区在线视频 | 亚洲制服中文字幕第一区| 日本一区午夜爱爱| 国产天堂一区二区综合| 国产成人高清亚洲一区91| 中文字幕日韩欧美一区二区三区 | 一区二区三区在线免费| 春暖花开亚洲性无区一区二区| 日本v片免费一区二区三区| 国产精品福利一区| 中日韩一区二区三区| 国产免费一区二区视频| 国产一区二区精品尤物| 亚洲高清美女一区二区三区| 三上悠亚一区二区观看| 波多野结衣的AV一区二区三区| 日韩人妻无码一区二区三区久久| 国产一区二区成人| 91精品乱码一区二区三区| 国产日韩一区二区三区| 国产欧美色一区二区三区| 精品免费国产一区二区| 无码AV动漫精品一区二区免费| 亚洲综合无码AV一区二区| 成人区精品人妻一区二区不卡| 亚洲一区二区三区久久| 中文字幕AV一区二区三区人妻少妇| 国产高清一区二区三区视频| 秋霞鲁丝片一区二区三区| aⅴ一区二区三区无卡无码| 国产一区在线mmai| 中文字幕一区二区日产乱码| 亚洲一区二区影视|