当前位置: 代码迷 >> 综合 >> vue-scroller 页面滚动相关总结
  详细解决方案

vue-scroller 页面滚动相关总结

热度:78   发布时间:2023-12-15 07:41:15.0

1 下载

npm i vue-scroller

2 引入

import Vue from 'vue'
import VueScroller from 'vue-scroller'
Vue.use(VueScroller)

3 使用

1)添加上拉加载方法和下拉刷新方法

2)加载完成调用 相应的方法结束动画,不然的话会一直显示动画

.wrapper{width: 100vw;height:88vh!important; margin-top:12vh;border: 1px solid darkblue;
}/**3)css部分 我的解决方案是:① 添加一个class给他一个固定的高度,我使用的是vh,也就是说这个滚动列表的高度是固定的又是响应式的,不需要动态计算他的高度了。我的理解是,所有的滚动区域都需要在外层给他一个固定高度的容器,这样她才能滚动。② 里面的内容不要设置高度。③ 很奇怪的是如果不设置高这个scroller 组件总是充满整个窗口,如果设置了高,那么他也会覆盖上面的 header 和tapbar 部分,不知道为什么,难道是用的是绝对定位吗?我的解决方案是设置一个margin-top,因为用的是vh ,所以每一个组件的高度都是固定的,窗口高度是100vh,所以很容易计算出margin-top**/

 

<scroller class="wrapper" ref="wrapper":on-refresh="refresh":on-infinite="loadMore"><!--  list --></scroller>
 refresh(){let that = this;console.log("刷新");setTimeout(function(){console.log(that.$refs.wrapper)that.$refs.wrapper.finishPullToRefresh();},2000)},loadMore(){/*** 这里的原理是,如果滑到最后了,那么就会触发上拉加载,* 如果你结束了上拉加载,然而下面并没有增加数据,也就是仍然滑到了最底下了,这个时候会再次触发* 上拉加载更多。* **/let that = this;console.log("加载更多");setTimeout(()=>{//   如果插入一个true ,那么地面会显示 ‘没有数据了’,也不会再次触发that.$refs.wrapper.finishInfinite(true);console.log("加载完毕")},2000)}

 

 

 

 

 

4 api

Scroller component attributes:

Attr. Name Description Required Default Value
onRefresh pull to refresh callback N -
onInfinite infinite loading callback N -
onInfinite infinite loading callback N -
refreshText tips of pull-to-refresh N 下拉刷新
noDataText tips of no-more-data when infinite-loading finished N 没有更多数据
width scroller container width N 100%
height scroller container height N 100%
snapping enable snapping mode N false
snappingWidth snapping width N 100 (stand for 100px)
snappingHeight snapping height N 100
refreshLayerColor text color of pull-to-refresh layer N #AAA
loadingLayerColor text color of infinite-loading layer N #AAA
minContentHeight min content height (px) of scroll-content N 0

Scroller vm instance methods:

  • resize() resize scroller content (deprecated, cause the scroller's content resizes self automatically)
  • triggerPullToRefresh() start pull-to-refresh manually
  • finishPullToRefresh() stop pull-to-refresh
  • finishInfinite(isNoMoreData :Boolean) stop infinite-loading
  • scrollTo(x:Integer, y:Integer, animate:Boolean) scroll to a position in scroller content
  • scrollBy(x:Integer, y:Integer, animate:Boolean) scroll by a position in scroller content
  • getPosition :Object get current position of scroller content