在頁面中經常會用到滾動,下拉刷新,下拉加載等功能,vux的scroller可以使用,但是它不再維護,而且要配合load-more組件一起使用。所以一般在項目中我都是用vue-scroller.
1.在項目中安裝:
npm i vue-scroller -S
2.在main.js中引用
import VueScroller from 'vue-scroller'
Vue.use(VueScroller)
3.在需要用到滾動的地方直接使用
<scroller>里面是滾動元素<scroller>
4.使用技巧
(1)一般來說,我們都是在一個列表中使用這個滾動,經過實踐,在使用scroller時,最好的布局方法是以下這種,一個外部的容器元素,將滾動標簽和滾動內容包裹起來,然后這個外層元素進行定位,要是有頭部標簽需要留出header的高度,並且滾動容器的高度要減小,不然會出現滾動條,在手機上導致滾動到底部看不到頭部的情況,在scroller里面再加一層容器的原因是一般scroller里面只有一個元素性能會比較好,滾動也比較流暢,不然可能會有滾動卡頓,上拉回彈等問題。
<div class="scrollerWrap">
<scroller height="100%" :on-refresh="refresh" :on-infinite="infinite" ref="scrollerBottom">
<main class="scrollerContent">
<div v-for="item in list">{{item}}</div>
</main>
</scroller>
</div>
.scrollerWrap{ position:absolute; width:100%; height:90%;//有header的時候可能會出現滾動條,所以最好高度是除去header的高度 top:40px;//一般頁面有header的時候需要留出header的高度 bottom:20px; main{ height:100%; } }
(2)scroller提供的屬性(常用):
onRefresh:下拉刷新
refresh(done){//下拉刷新 //your code },
onInfinite:上拉加載
infinite(done){//上拉加載 if(this.isBottom){//當沒有更多數據的時候結束加載 this.loadingTips ="無更多數據" setTimeout(()=>{ done&&done(true); },1000); }else{//有更多數據時進行數據分頁顯示 setTimeout(() => { this.page++; this.getDataList(this.page); this.$nextTick(() => { this.$refs.scrollerBottom.reset() }) },1500) } },
refreshText: 下拉刷新的提示文字
noDataText: 上拉加載沒有數據的提示文字
(3)scroller提供的方法(常用):
getPosition(): 得到滾動區域當前的位置
scrollTo(): 滾動到頁面的某一個位置
scrollBy();滾動到內容的相對位置