BetterScroll插件实现页面滚动效果
BetterScoll 用于解决列表的动态滚动,实现移动端列表上拉加载,下拉刷新,水平/垂直滚动,滚动至指定高度等功能。BetterScroll 支持大量参数配置,提供很多灵活的 api 实现指定功能。
实现 BetterScroll 滚动时父元素的高度或宽度需要进行固定,同时确保父元素和子元素内容正确渲染;在 DOM 结构发生改变时需要重新调用 scroll.refresh()
方法重新计算来确保滚动效果正常。
安装:
npm install better-scroll --save
基本结构:
<div class="wrapper"> |
Scroll 配置项
Scroll 常用方法
Scroll 事件监听
Vue 中实现 BetterScroll
Vue.js 提供了我们一个获取 DOM 对象的接口 vm.$refs
,可以通过 this.$refs.wrapper
访问 DOM 对象。在 mounted 钩子函数里,使用回调函数保证初始化时 wrapper 的 DOM 已经渲染,可以正确计算它以及它内层 content 的高度以确保滚动正常。
<template> |
组件封装
Scroll 组件的 DOM 结构包括顶部和底部的提示信息以及中间部分的列表组件,使用插槽 <slot>
进行占位。
<div ref="wrapper" class="wrapper"> |
组件的 js 部分对 Scroll 做 Vue 的封装,在 prop 里重写 Scroll 配置项,将控制权交给调用 Scroll.vue 的父组件;通过 methods 暴露的一些方法对 better-scroll 的方法做一层代理;watch 监听 data 的改变,及时调用 refresh 方法重新计算 better-scroll 确保滚动效果正常。
import BScroll from 'better-scroll' |
参考资料:
https://github.com/ustbhuangyi/better-scroll
https://better-scroll.github.io/docs/zh-CN/
- 本文链接:https://hyqskevin.github.io/2020/05/28/better-scroll/
- 版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 CN 许可协议。转载请注明出处!