vue-better-scroll
A vue plugins based on better-scroll
最近写移动端项目下拉刷新,上拉加载的场景很常见,发现 mint-ui 的 Loadmore 组件效果体验不尽如人意, Vux 的 Scroller 组件作者不推荐使用也停止维护了,最后决定根据better-scroll封装成自己的vue组件,作者也提供了详细的教程。
Example
Use Setup
Install vue2-better-scroll
1 | yarn add vue2-better-scroll |
Vue mount
1 | // import |
Use in SPA
1 | <vue-better-scroll |
Attributes:
参数 | 说明 | 类型 | 可选值 | 默认值
|—|—|—|—|—|
probeType | 派发scroll事件的条件 | Number | 1、2、3 | 1 |
click | better-scroll 会派发一个 click 事件 | Boolean | | true
listenScroll | 是否监听滚动,开启后才能派发scroll事件| Boolean | | false
listenBeforeScroll | 是否监听滚动之前,开启后才能派发beforeScrollStart事件| Boolean | | false
direction | 滚动方向| String | horizontal、vertical | vertical
scrollbar | 这个配置可以开启滚动条。当设置为 true 或者是一个 Object 的时候,都会开启滚动条,默认是会 fade 的 | Boolean or Object | {fade: true}, | false
pullDownRefresh | 这个配置用于做下拉刷新功能。当设置为 true 或者是一个 Object 的时候,可以开启下拉刷新,可以配置顶部下拉的距离(threshold) 来决定刷新时机以及回弹停留的距离(stop)| Boolean or Object | {threshold: 90,stop: 40}, | false
pullUpLoad | 这个配置用于做上拉加载功能。当设置为 true 或者是一个 Object 的时候,可以开启上拉加载,可以配置离底部距离阈值(threshold)来决定开始加载的时机| Boolean or Object | { threshold: 0, txt: { more: ‘加载更多’,noMore:’没有更多数据了’} } | false
startY | 纵轴方向初始化位置 | Number | | 0
freeScroll | 有些场景我们需要支持横向和纵向同时滚动,而不仅限制在某个方向,这个时候我们只要设置 freeScroll 为 true 即可 | Boolean | | false
Slots:
name | 说明
|—|—|
default | 滚动的主体内容区域
pulldown | 下拉刷新的内容
pullup | 上拉加载的内容
Methods:
方法名 | 说明 | 参数
|—|—|—|
initScroll | 初始化scroll组件 | |
disable | 禁用 better-scroll,DOM 事件(如 touchstart、touchmove、touchend)的回调函数不再响应 | |
enable | 启用 better-scroll, 默认 开启 | |
refresh | 重新计算 better-scroll,当 DOM 结构发生变化的时候务必要调用确保滚动的效果正常(当页面无法滚动时,可尝试调用此方法)| |
scrollTo | 滚动到指定的位置 | (scrollToX, scrollToY, scrollToTime, easing)接收4个参数,1.x横轴坐标(px) 2.y 纵轴坐标(px) 3.滚动动画执行的时长(ms) 4.easing 缓动函数,一般不建议修改
scrollToElement | 滚动到指定的目标元素 | (el, time, offsetX , offsetY )接收4个参数 详情请查看: scrollToElement
destroy | 销毁 better-scroll,解绑事件
forceUpdate | 数据跟新后强制更新页面 | (dirty)接收1个 boolean 类型的参数,如果参数为true,说明还可以触发下拉或者上拉事件,若参数为false表示之后不可拉动,一般用于数据加载全部了
Events:
事件名称 | 说明 | 回调参数
|—|—|—|
scroll | 触发时机:滚动过程中,具体时机取决于选项中的 probeType (触发事件在参数中需要开启 listenScroll ) | 共1个参数,类型Object, {x, y} 滚动的实时坐标
beforeScrollStart | 触发时机:滚动开始之前 (触发事件在参数中需要开启 listenBeforeScroll ) | 无
pullingDown | 触发时机:在一次下拉刷新的动作后,这个时机一般用来去后端请求数据。(触发事件在参数中需要开启 pullDownRefresh 相关配置 ) | 无
pullingUp | 触发时机:在一次上拉加载的动作后,这个时机一般用来去后端请求数据。(触发事件在参数中需要开启 pullingUp 相关配置 ) | 无
目前只提供了以上常用方法、Api,如有额外需要请 issue