vue2.0 better-scroll 實(shí)現(xiàn)移動(dòng)端滑動(dòng)的示例代碼
寫(xiě)在前面的話(huà):
上一篇文章實(shí)現(xiàn)了滑動(dòng)效果,這部分來(lái)試試左右聯(lián)動(dòng)效果的實(shí)現(xiàn)方法吧
效果:滑動(dòng)右側(cè)時(shí),左側(cè)也能有相應(yīng)的變化;點(diǎn)擊左側(cè)時(shí),右側(cè)也能自動(dòng)定位到相應(yīng)的位置。
如下圖所示界面,左側(cè)為分欄,右側(cè)為分欄詳情。
滑動(dòng)右邊使左邊聯(lián)動(dòng)的大概的思路:
1)要知道右側(cè)的列表中,每一個(gè)分欄所占的高度,存進(jìn)一個(gè)數(shù)組中。
2)實(shí)現(xiàn)左邊聯(lián)動(dòng),則必須要監(jiān)控 “scroll”事件,獲取其高度
3)將scroll 的高度與右側(cè)分欄的高度進(jìn)行比較,獲得其 index 值
4)左側(cè)的分類(lèi)中,使與 index 相應(yīng)的分欄高亮即可~
余留的問(wèn)題:額,左側(cè)怎么跟著一起滾動(dòng)?應(yīng)該還需要判斷一下當(dāng)前左側(cè)欄中的scroll的位置,然后使之跟隨變化,但是不同尺寸的手機(jī),高度不一,怎么解決???我不知道……
點(diǎn)擊左邊時(shí),右邊實(shí)現(xiàn)自動(dòng)定位的大概思路:
1)首先要使點(diǎn)擊有效,因?yàn)?better-scroll將默認(rèn)事件都阻止了
2)為左側(cè)的分欄綁定點(diǎn)擊事件,并獲取 index ,然后使右邊的相應(yīng) index 分類(lèi)滾動(dòng)就行了~so easy ....but!!!
怎么下手???!
1. 先實(shí)現(xiàn)滑動(dòng)右邊觸發(fā)左邊的功能:
做法:
(1)定義變量先~ 在data中加入一個(gè) listHight: [] 數(shù)組;一個(gè)變量scrollY : 0,用來(lái)裝目前的scroll的y位置坐標(biāo)
(2)在methods 中定義一個(gè)函數(shù)計(jì)算高度,此處還要用到一個(gè)知識(shí)點(diǎn)(如何獲取 分類(lèi)列表dom元素?)還記得上一篇中使用到的this.$refs 嗎?
我們先給要獲取高度的那個(gè)元素取個(gè)類(lèi)名,名字叫:“food-list-hook”:
let foodList =this.$refs.foodsWrapper.getElementsByClassName('food-list-hook') 這樣就獲取了所有分類(lèi)列表啦,計(jì)算方法定義如下:
_calculateHeight () { // console.log(this) let foodList = this.$refs.foodsWrapper.getElementsByClassName('food-list-hook') let height = 0 this.listHight.push(height) for (let i = 0; i < foodList.length; i++) { let item = foodList[i] height += item.clientHeight this.listHight.push(height) } }
(3)然后在計(jì)算屬性computed 中,來(lái)比較數(shù)組中的高度值與當(dāng)前的 scroll 的y坐標(biāo)值,返回的是當(dāng)前所在高度的index值:
在執(zhí)行這一步時(shí),scrollY的值,要怎么得到?(通過(guò)better-scroll 檢測(cè)“scroll”事件得到,此時(shí),需要給其加上相應(yīng)的參數(shù),做法如截圖中畫(huà)紅線處所示)
currentIndex () { for (let i = 0; i < this.listHight.length; i++) { let height1 = this.listHight[i] let height2 = this.listHight[i + 1] if (!height2 || (this.scrollY >= height1 && this.scrollY < height2)) { return i } } return 0 } }
(4)在 template 中,將此index 值綁定到index 值相等的左側(cè)的列表分欄中,并指定一個(gè)類(lèi)名,叫 current,如下圖中的 畫(huà)紅線的部分:
(5)在style中,將相應(yīng)的current 類(lèi)加上相應(yīng)的樣式即可:
2. 再來(lái)實(shí)現(xiàn)點(diǎn)擊左邊,右邊聯(lián)動(dòng)的效果
(1)使 左邊欄 點(diǎn)擊有效,如下圖紅線標(biāo)注所示:
(2)為左側(cè)欄 添加相應(yīng)的點(diǎn)擊事件:
(3)在methods 中編寫(xiě)點(diǎn)擊觸發(fā)的事件 selectMenu()方法,利用 獲取的 $index 使右邊進(jìn)行相應(yīng)的滾動(dòng),其中 300ms是加上了一個(gè)過(guò)渡效果:
試試吧~
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Vue實(shí)現(xiàn)移動(dòng)端左右滑動(dòng)效果的方法
- vue自定義移動(dòng)端touch事件之點(diǎn)擊、滑動(dòng)、長(zhǎng)按事件
- vue2.0移動(dòng)端滑動(dòng)事件vue-touch的實(shí)例代碼
- vue移動(dòng)端的左右滑動(dòng)事件詳解
- 寫(xiě)一個(gè)移動(dòng)端慣性滑動(dòng)&回彈Vue導(dǎo)航欄組件 ly-tab
- vue實(shí)現(xiàn)一個(gè)移動(dòng)端屏蔽滑動(dòng)的遮罩層實(shí)例
- vue移動(dòng)端實(shí)現(xiàn)手機(jī)左右滑動(dòng)入場(chǎng)動(dòng)畫(huà)
- vue移動(dòng)端實(shí)現(xiàn)手指滑動(dòng)效果
- 移動(dòng)端滑動(dòng)切換組件封裝 vue-swiper-router實(shí)例詳解
- vue3實(shí)現(xiàn)移動(dòng)端滑動(dòng)模塊
相關(guān)文章
Element?ui關(guān)閉el-dialog時(shí)如何清除數(shù)據(jù)
這篇文章主要介紹了Element?ui關(guān)閉el-dialog時(shí)如何清除數(shù)據(jù)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02vue3 reactive定義的引用類(lèi)型直接賦值導(dǎo)致數(shù)據(jù)失去響應(yīng)式問(wèn)題
這篇文章主要介紹了vue3 reactive定義的引用類(lèi)型直接賦值導(dǎo)致數(shù)據(jù)失去響應(yīng)式問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06Element圖表初始大小及窗口自適應(yīng)實(shí)現(xiàn)
這篇文章主要介紹了Element圖表初始大小及窗口自適應(yīng)實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07vue3使用ref獲取dom結(jié)果為'null'的原因詳析
這篇文章主要給大家介紹了關(guān)于vue3使用ref獲取dom結(jié)果為'null'的原因詳析,ref是Vue3中一個(gè)非常重要的功能,它可以用來(lái)獲取DOM節(jié)點(diǎn),從而實(shí)現(xiàn)對(duì)DOM節(jié)點(diǎn)的操作,需要的朋友可以參考下2023-07-07vue-element-admin 全局loading加載等待
本文主要介紹了vue-element-admin 全局loading加載等待,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09解決element ui el-row el-col里面高度不一致問(wèn)題
這篇文章主要介紹了解決element ui el-row el-col里面高度不一致問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08使用electron-builder將項(xiàng)目打包成桌面程序的詳細(xì)教程
這篇文章主要介紹了使用electron-builder把web端的項(xiàng)目打包生成桌面程序,并可安裝程序,文中通過(guò)代碼示例和圖文結(jié)合的方式給大家介紹的非常詳細(xì),具有一定的參考價(jià)值,需要的朋友可以參考下2024-08-08