日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

vue使用better-scroll實現(xiàn)滑動以及左右聯(lián)動

瀏覽:75日期:2023-01-10 10:54:49

本文實例為大家分享了vue實現(xiàn)滑動以及左右聯(lián)動效果的具體代碼,供大家參考,具體內(nèi)容如下

一、首先需要在項目中引入better-scroll

1. 在package.json 直接寫入 'better-scroll':'^1.15.1' 版本以github上為準(zhǔn)(目前最新)

2.cpnm install 在node_modules 可以查看版本是否安裝

3.直接在你的組件里面寫入import BScroll from ’better-scroll’;

二、better-scroll優(yōu)點

1.體驗像原生:滾動非常流暢,而且沒有滾動條。

2.滾動位置固定:在vue中通過路由切換頁面時組件會自動滾動到頂部,需要監(jiān)聽滾動行為才能讓滾動位置固定,better-scroll解決了這個問題。

三、下面是在項目中的使用

移動端很常見的效果,當(dāng)滑動右邊部分的時候,左邊會聯(lián)動顯示與當(dāng)前內(nèi)容相符合的標(biāo)題高亮,當(dāng)點擊左邊某一個標(biāo)題的時候,右邊會自動滑動到相應(yīng)的內(nèi)容。

項目如下圖:

vue使用better-scroll實現(xiàn)滑動以及左右聯(lián)動

實現(xiàn)及說明

1.滾動效果

better-scroll在使用的時候需要在dom元素渲染完成之后初始化better-scroll的實例,初始化的時候,先要獲取需要滑動的元素,然后在初始化的時候?qū)@取到的元素傳遞給初始化函數(shù),此時便可實現(xiàn)滑動效果

2.左右聯(lián)動效果

左右聯(lián)動效果的實現(xiàn),是better-scroll通過監(jiān)聽事件實現(xiàn)的。

首先獲取到右邊內(nèi)容盒子的高度,然后獲取到該盒子中每一項的高度并做前n項高度累加(第n項的高度是前n項的高度和)存儲到listHeight數(shù)組中。在初始化的時候傳遞屬性probeType=3 (探針的效果,時時獲取滾動高度),并給右邊的內(nèi)容盒子對象監(jiān)聽scroll事件,從而時時獲取Y軸位置,來與listHeight數(shù)組中的數(shù)據(jù)做比較,時時計算當(dāng)前的索引值,并給對邊對應(yīng)索引值的項添加背景色高亮,從而實現(xiàn)右邊滑動,聯(lián)動左邊。

當(dāng)點擊左邊的每一項的時候,獲取到當(dāng)前的索引值,并根據(jù)當(dāng)前的索引值獲取到與右邊內(nèi)容盒子中對應(yīng)索引的元素,右邊的盒子元素通過監(jiān)聽scrollToElement,并傳遞獲取到的對應(yīng)索引元素和動畫時間,從而實現(xiàn)點擊左邊,實現(xiàn)右邊聯(lián)動;

實現(xiàn)代碼如下:

<template> <section class='box'> <div class='head'> head </div> <div class='content'> <div ref='left'> <ul> <li v-for='(item, index) in left' :key='item' : @click='selectItem(index, $event)'> <span class='left-item'>{{item}}</span> </li> </ul> </div> <div ref='right'> <ul> <li v-for='item in right' :key='item.name'> <h2>{{item.name}}</h2> <ul> <li v-for='num in item.content' :key='num.name'> <div>{{item.name+num}}</div> </li> </ul> </li> </ul> </div> </div> </section></template><script>import BScroll from ’better-scroll’export default { data () { return { left: [’a’, ’b’, ’c’, ’d’, ’e’, ’f’], right: [ { name: ’a’, content: [’1’, ’2’, ’3’, ’4’, ’5’] }, { name: ’b’, content: [’1’, ’2’, ’3’, ’4’, ’5’] }, { name: ’c’, content: [’1’, ’2’, ’3’, ’4’, ’5’] }, { name: ’d’, content: [’1’, ’2’, ’3’, ’4’, ’5’] }, { name: ’e’, content: [’1’, ’2’, ’3’, ’4’, ’5’] }, { name: ’f’, content: [’1’, ’2’, ’3’, ’4’, ’5’] }, ], listHeight: [], scrollY: 0, //實時獲取當(dāng)前y軸的高度 clickEvent: false } }, methods: { _initScroll () { //better-scroll的實現(xiàn)原理是監(jiān)聽了touchStart,touchend事件,所以阻止了默認(rèn)的事件(preventDefault) //所以在這里做點擊的話,需要在初始化的時候傳遞屬性click,派發(fā)一個點擊事件 //在pc網(wǎng)頁瀏覽模式下,點擊事件是不會阻止的,所以可能會出現(xiàn)2次事件,所以為了避免2次,可以在綁定事件的時候把$event傳遞過去 this.lefts = new BScroll(this.$refs.left, { click: true }) this.rights = new BScroll(this.$refs.right, { probeType: 3 //探針的效果,實時獲取滾動高度 }) //rights這個對象監(jiān)聽事件,實時獲取位置pos.y this.rights.on(’scroll’, (pos) => { this.scrollY = Math.abs(Math.round(pos.y)) }) }, _getHeight () { let rightItems = this.$refs.right.getElementsByClassName(’right-item-hook’) let height = 0 this.listHeight.push(height) for(let i = 0; i < rightItems.length; i++){ let item = rightItems[i] height += item.clientHeight this.listHeight.push(height) } }, selectItem(index,event){ this.clickEvent = true //在better-scroll的派發(fā)事件的event和普通瀏覽器的點擊事件event有個屬性區(qū)別_constructed //瀏覽器原生點擊事件沒有_constructed所以當(dāng)時瀏覽器監(jiān)聽到該屬性的時候return掉 if(!event._constructed){ return }else{ let rightItems = this.$refs.right.getElementsByClassName(’right-item-hook’) let el = rightItems[index] this.rights.scrollToElement(el, 300) } } }, mounted () { this.$nextTick(() => { this._initScroll() this._getHeight() }) }, computed: { currentIndex () { for(let i = 0; i < this.listHeight.length; i ++){ let height = this.listHeight[i] let height2 = this.listHeight[i + 1] //當(dāng)height2不存在的時候,或者落在height和height2之間的時候,直接返回當(dāng)前索引 //>=height,是因為一開始this.scrollY=0,height=0 if(!height2 || (this.scrollY >= height && this.scrollY < height2)){ return i } if(this.listHeight[this.listHeight.length - 1] - this.$refs.right.clientHeight <= this.scrollY){ if(this.clickTrue){ return this.currentNum }else{ return (this.listHeight.length - 1) } } } //如果this.listHeight沒有的話,就返回0 return 0 } }}</script><style scoped>.content{ display: flex; position: absolute; top:100px; bottom:100px; width:100%; overflow: hidden; background: #eee;}.left{ flex: 0 0 80px; width:80px; background-color: #f3f5f7;} .left li{ width: 100%; height: 100%; } .current{ background-color: red; } .left-item{ display: block; width:100%; height:100px; line-height: 50px; text-align: center; border-bottom:1px solid yellow; } .right{ flex: 1; } .right-item li{ width:100%; height:100px; line-height:100px; text-align: center; border-bottom: 1px solid yellow; } *{ list-style: none; margin: 0; padding: 0; }</style>

關(guān)于vue.js組件的教程,請大家點擊專題vue.js組件學(xué)習(xí)教程進(jìn)行學(xué)習(xí)。

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

標(biāo)簽: Vue
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
欧美日韩精品一本二本三本| 加勒比视频一区| 中文字幕一区二区三区日韩精品 | 精品网站aaa| 亚洲在线国产日韩欧美| 色爱综合网欧美| 国产欧美一区二区三区精品观看| 另类国产ts人妖高潮视频| 亚洲国产成人二区| 国产精品99精品一区二区三区∴| 亚洲女人av| 激情婷婷综合| 午夜av成人| 欧美日韩在线观看首页| 国产精品一区二区精品| 日韩精品高清不卡| 免费在线视频一区| 黄色aa久久| 久久女人天堂| 国产精品一级在线观看| 日韩精品91亚洲二区在线观看| 爽爽淫人综合网网站| 日韩亚洲在线| 波多野结衣一区| 国产91久久精品一区二区| 日本国产精品| 久久青草久久| 亚洲国产影院| 亚洲爱爱视频| 91综合网人人| 97精品国产| 成人自拍av| 亚洲午夜一级| 国产视频一区在线观看一区免费| 性欧美xxxx免费岛国不卡电影| 国产麻豆久久| 久久久9色精品国产一区二区三区| 丝袜美腿一区| 999久久久国产精品| 亚洲精品.com| 亚洲黄页一区| 蜜桃视频一区二区三区| 亚洲精品极品| 国产精品毛片aⅴ一区二区三区| 91精品尤物| 免费在线日韩av| 精品视频在线你懂得| 国产a亚洲精品| 久久精品青草| 亚洲一区日韩| 91精品国产自产在线丝袜啪| 国产免费av一区二区三区| 免费一级欧美片在线观看网站 | 欧美黄色网页| 欧美精品一卡| 亚洲一区二区日韩| 日本欧洲一区二区| 日韩美女精品| 精品国产欧美日韩| 亚洲天堂黄色| 在线观看一区| 国产精品香蕉| 日韩中文视频| 亚洲网址在线观看| 国产精品草草| 色黄视频在线观看| 伊人精品视频| 欧美日韩网址| 国产精品欧美三级在线观看| 国产精品99精品一区二区三区∴ | 日韩一区二区三区四区五区| 国产日韩欧美一区在线| 成人国产精品一区二区网站| 国产精品av久久久久久麻豆网| 麻豆久久精品| 国产精品成人3p一区二区三区| 美女福利一区二区三区| 91精品91| 国产日韩欧美三级| 91精品国产福利在线观看麻豆| 天堂久久av| 中文字幕在线视频久| 婷婷激情综合| 亚洲三级观看| 成人污污视频| 亚洲一区二区av| 老色鬼精品视频在线观看播放| 成人啊v在线| 欧美日韩国产综合网| 国产亚洲欧美日韩精品一区二区三区 | 久久国产视频网| 精品视频高潮| 亚洲一区二区三区久久久| 精品视频一区二区三区在线观看| 亚洲午夜电影| 国产伦乱精品| av亚洲在线观看| 国产精品一二| 国产精品嫩草99av在线| 精品久久久中文字幕| 日av在线不卡| 精品久久电影| 亚洲欧洲av| 激情自拍一区| 久久精品国产一区二区| 亚洲激情另类| 久久av偷拍| 亚洲专区一区| 福利欧美精品在线| 日韩激情啪啪| 国产午夜精品一区二区三区欧美| 久久婷婷国产| 亚洲精品观看| 日韩视频二区| 在线人成日本视频| 国产精品porn| 久久亚洲国产精品一区二区| 日韩伦理一区| 国产精品欧美在线观看| 免费久久精品视频| 亚洲综合电影| 国产亚洲欧美日韩在线观看一区二区| 99成人在线| 亚洲网站视频| 超碰成人av| 麻豆极品一区二区三区| 日韩av中文字幕一区二区| 日韩午夜一区| 亚洲手机视频| 日韩在线二区| 精品国产欧美日韩| 综合国产视频| 日韩亚洲国产欧美| 亚洲国产综合在线看不卡| 福利视频一区| 麻豆精品99| 国产精品第一国产精品| 日韩国产欧美一区二区三区| 在线精品观看| 午夜一区在线| 日韩电影免费网站| 水蜜桃精品av一区二区| 精品三级在线观看视频| 欧美久久一区二区三区| 国产激情久久| 天堂√8在线中文| 欧美日韩尤物久久| 亚洲欧美日韩视频二区| 日本色综合中文字幕| 精品久久视频| 免费av一区二区三区四区| 国产免费成人| 国产亚洲精品美女久久| 久久电影tv| 欧美专区在线| 国产欧美69| 99久久夜色精品国产亚洲1000部| 丝袜脚交一区二区| 国产欧美在线| 91精品一区二区三区综合| 亚洲综合三区| 日本午夜精品| 黄色aa久久| 一区二区日韩免费看| 麻豆91在线播放| 91久久久精品国产| 久久国产人妖系列| 香蕉成人av| 日韩一区二区三区精品| 国产999精品在线观看 | 最新中文字幕在线播放| 伊人影院久久| 国产精品亚洲欧美日韩一区在线 | 久久久久观看| 亚洲激情二区| 国产精品成人一区二区网站软件| 欧美日韩精品免费观看视完整| 午夜在线一区| 久久这里只有| 丝袜美腿亚洲一区二区图片| 麻豆精品新av中文字幕| 欧美日韩四区| 精品国产一区二区三区2021| 亚洲精品1区| 久久精品国产亚洲一区二区三区| 亚洲精品va| 精品免费视频| 蜜桃视频第一区免费观看| 国产成人精品福利| 欧美中文字幕| 欧美xxxx中国| 亚洲v天堂v手机在线| 日韩免费小视频| 欧美欧美黄在线二区| 免费视频国产一区| 国产一区一一区高清不卡| 亚洲精品欧洲| 亚洲四虎影院| 你懂的国产精品| 一二三区精品|