vue中使用better-scroll實(shí)現(xiàn)滑動(dòng)效果及注意事項(xiàng)
一、首先需要在項(xiàng)目中引入better-scroll
1. 在package.json 直接寫(xiě)入 "better-scroll":"^1.11.1" 版本以github上為準(zhǔn)(目前最新)
2.cpnm install
在node_modules 可以查看版本是否安裝
3.直接在你的組件里面寫(xiě)入import BScroll from 'better-scroll';
二、better-scroll優(yōu)點(diǎn)
1.體驗(yàn)像原生:滾動(dòng)非常流暢,而且沒(méi)有滾動(dòng)條。
2.滾動(dòng)位置固定:在vue中通過(guò)路由切換頁(yè)面時(shí)組件會(huì)自動(dòng)滾動(dòng)到頂部,需要監(jiān)聽(tīng)滾動(dòng)行為才能讓滾動(dòng)位置固定,better-scroll解決了這個(gè)問(wèn)題。
三、下面是在項(xiàng)目中的使用
先給大家介紹最終要實(shí)現(xiàn)的效果
就是移動(dòng)端很常見(jiàn)的效果,當(dāng)滑動(dòng)右邊部分的時(shí)候,左邊會(huì)聯(lián)動(dòng)顯示與當(dāng)前內(nèi)容相符合的標(biāo)題高亮,當(dāng)點(diǎn)擊左邊某一個(gè)標(biāo)題的時(shí)候,右邊會(huì)自動(dòng)滑動(dòng)到相應(yīng)的內(nèi)容。
實(shí)現(xiàn)及說(shuō)明
1.滾動(dòng)效果
better-scroll在使用的時(shí)候需要在dom元素渲染完成之后初始化better-scroll的實(shí)例,初始化的時(shí)候,先要獲取需要滑動(dòng)的元素,然后在初始化的時(shí)候?qū)@取到的元素傳遞給初始化函數(shù),此時(shí)便可實(shí)現(xiàn)滑動(dòng)效果
2.左右聯(lián)動(dòng)效果
左右聯(lián)動(dòng)效果的實(shí)現(xiàn),是better-scroll通過(guò)監(jiān)聽(tīng)事件實(shí)現(xiàn)的。
首先獲取到右邊內(nèi)容盒子的高度,然后獲取到該盒子中每一項(xiàng)的高度并做前n項(xiàng)高度累加(第n項(xiàng)的高度是前n項(xiàng)的高度和)存儲(chǔ)到listHeight數(shù)組中。在初始化的時(shí)候傳遞屬性probeType=3 (探針的效果,時(shí)時(shí)獲取滾動(dòng)高度),并給右邊的內(nèi)容盒子對(duì)象監(jiān)聽(tīng)scroll事件,從而時(shí)時(shí)獲取Y軸位置,來(lái)與listHeight數(shù)組中的數(shù)據(jù)做比較,時(shí)時(shí)計(jì)算當(dāng)前的索引值,并給對(duì)邊對(duì)應(yīng)索引值的項(xiàng)添加背景色高亮,從而實(shí)現(xiàn)右邊滑動(dòng),聯(lián)動(dòng)左邊。
當(dāng)點(diǎn)擊左邊的每一項(xiàng)的時(shí)候,獲取到當(dāng)前的索引值,并根據(jù)當(dāng)前的索引值獲取到與右邊內(nèi)容盒子中對(duì)應(yīng)索引的元素,右邊的盒子元素通過(guò)監(jiān)聽(tīng)scrollToElement,并傳遞獲取到的對(duì)應(yīng)索引元素和動(dòng)畫(huà)時(shí)間,從而實(shí)現(xiàn)點(diǎn)擊左邊,實(shí)現(xiàn)右邊聯(lián)動(dòng);
實(shí)現(xiàn)代碼如下:
html結(jié)構(gòu)
demo中用到的數(shù)據(jù)結(jié)構(gòu)
demo中用到的方法
方法的調(diào)用
屬性計(jì)算
樣式不做過(guò)多介紹
需要注意的是,該頁(yè)面的這一部分給了固定的高度,且超出部分overflow:hidden;
3.better-scroll實(shí)現(xiàn)水平滑動(dòng)效果
項(xiàng)目中經(jīng)常會(huì)遇到需要水平滑動(dòng)的需求,現(xiàn)在就用better-scroll來(lái)實(shí)現(xiàn)它
better-scroll的使用方式跟上邊的說(shuō)明是一樣,只是配置項(xiàng)發(fā)生了變化,下面將代碼貼出來(lái),就明了了。
template部分
js部分
css部分
注意事項(xiàng):
1.tab_content是內(nèi)容的盒子,他的長(zhǎng)度就是內(nèi)容的寬度;
2.由于內(nèi)容的盒子是需要滑動(dòng)的,所以在內(nèi)容盒子的外邊還需要在加一層盒子,寬度為100%。
better-scroll插件git地址https://github.com/ustbhuangyi/better-scroll
總結(jié)
以上所述是小編給大家介紹的vue中使用better-scroll實(shí)現(xiàn)滑動(dòng)效果及注意事項(xiàng),希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
- Vue實(shí)現(xiàn)移動(dòng)端左右滑動(dòng)效果的方法
- vue自定義移動(dòng)端touch事件之點(diǎn)擊、滑動(dòng)、長(zhǎng)按事件
- 基于Vue實(shí)現(xiàn)頁(yè)面切換左右滑動(dòng)效果
- vue2.0移動(dòng)端滑動(dòng)事件vue-touch的實(shí)例代碼
- 在vue中實(shí)現(xiàn)禁止屏幕滾動(dòng),禁止屏幕滑動(dòng)
- vue實(shí)現(xiàn)滑動(dòng)到底部加載更多效果
- vue移動(dòng)端的左右滑動(dòng)事件詳解
- vue實(shí)現(xiàn)頁(yè)面切換滑動(dòng)效果
- vue移動(dòng)端實(shí)現(xiàn)手機(jī)左右滑動(dòng)入場(chǎng)動(dòng)畫(huà)
- vue實(shí)現(xiàn)小球滑動(dòng)交叉效果
相關(guān)文章
實(shí)現(xiàn)一個(gè)Vue自定義指令懶加載的方法示例
這篇文章主要介紹了實(shí)現(xiàn)一個(gè)Vue自定義指令懶加載的方法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06Vue +WebSocket + WaveSurferJS 實(shí)現(xiàn)H5聊天對(duì)話交互的實(shí)例
這篇文章主要介紹了Vue +WebSocket + WaveSurferJS 實(shí)現(xiàn)H5聊天對(duì)話交互的實(shí)例,幫助大家更好的理解和學(xué)習(xí)vue,感興趣的朋友可以了解下2020-11-11詳解vue-Resource(與后端數(shù)據(jù)交互)
本篇文章主要介紹了vue-Resource(與后端數(shù)據(jù)交互),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-01-01Vue 父子組件的數(shù)據(jù)傳遞、修改和更新方法
下面小編就為大家分享一篇Vue 父子組件的數(shù)據(jù)傳遞、修改和更新方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-03-03如何在vue項(xiàng)目中嵌入jsp頁(yè)面的方法(2種)
這篇文章主要介紹了如何在vue項(xiàng)目中嵌入jsp頁(yè)面的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02vue3+vite+antd如何實(shí)現(xiàn)自定義主題
這篇文章主要介紹了vue3+vite+antd如何實(shí)現(xiàn)自定義主題問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03Vue利用相反數(shù)實(shí)現(xiàn)飄窗動(dòng)畫(huà)效果
飄窗,即一個(gè)類似小窗子的在網(wǎng)頁(yè)上移動(dòng)的矩形元素,通常被用于一些通知類的應(yīng)用場(chǎng)景。本文將利用相反數(shù)實(shí)現(xiàn)這一動(dòng)畫(huà)效果,需要的可以參考一下2022-05-05