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



在這里插入圖片描述
這里主要用到微信小程序提供的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 條評論)
暫無評論

返回頂部

主站蜘蛛池模板: 久久精品视频国产| 国内一卡2卡三卡四卡在线| 国产成人综合欧美精品久久| 亚洲第九十九页| 99在线精品视频| 男男chinese同志gay露脸飞机| 日本精品少妇一区二区三区| 国产精品二区高清在线| 亚洲成av人在线视| 5g影院天天爽天天| 欧美激情一区二区| 国产精品无码久久久久久 | 亚洲精品456| 99re在线观看视频| 欧美精品国产一区二区| 国精产品一二二区视在线| 亚洲色欲久久久综合网东京热| 99精品国产在热久久无码| 亚洲国产精品成人精品小说 | 国产色丁香久久综合| 末成年ASS浓精PICS| 国产成人亚综合91精品首页| 久久精品国产一区二区三区肥胖| 高潮内射免费看片| 日本三级生活片| 嘿咻视频免费网站| yy6080一级毛片高清| 狠狠躁夜夜躁av网站中文字幕 | 精品无码三级在线观看视频| 少妇饥渴XXHD麻豆XXHD骆驼 | 在线播放中文字幕| 亚洲欧美一区二区三区日产| 香焦视频在线观看黄| 晚上睡不着来b站一次看过瘾| 国产内射大片99| 中文字幕丝袜诱惑| 男人资源在线观看| 国产精品美女一区二区三区| 久青草视频在线播放| 色偷偷狠狠色综合网| 婷婷开心中文字幕|