BetterScroll 是一款重点解决移动端各种滚动场景需求的插件,适用于滚动列表、选择器、轮播图、索引列表、开屏引导等应用场景。目前已兼容 PC 端,但似乎还有点小问题。该插件是借鉴 iscroll 发展而来, API 基本兼容 iscroll。值得注意的是 BetterScroll 是使用纯 JavaScript 实现的,所以你可以原生使用它,也可以与一些流行的 MVVM 框架结合使用,比如官方示例中用到的 Vue。
插件安装
BetterScroll 已经更新到 2.0.6 版本了,新版本为了解耦 BetterScroll 1.x 的各个 feature 的功能,防止 bundle 体积无限制的增加,采用了插件化 的架构设计。所以新版本的安装使用就变成了这个样式:
全部安装
npm 方式安装
// 安装 npm install better-scroll -S # 安装带有所有插件的 BetterScroll // 导入 import BetterScroll from 'better-scroll' // 使用 let bs = new BetterScroll('.wrapper', { movable: true, zoom: true })
script 标签引入
// 引入 <script src="https://unpkg.com/better-scroll@latest/dist/better-scroll.js"></script> // 压缩后的文件引入 <script src="https://unpkg.com/better-scroll@latest/dist/better-scroll.min.js"></script> // 使用 let wrapper = document.getElementById("wrapper") let bs = BetterScroll.createBScroll(wrapper, {})
按需安装
npm 方式安装
核心部分安装
// 安装 npm install @better-scroll/core # 核心滚动部分 // 导入 import BScroll from '@better-scroll/core' // 使用 let bs = new BScroll('.wrapper', {})
插件部分安装
// 安装 npm install @better-scroll/PluginName --save // 导入 import Plugin from 'somewhere' BScroll.use(Plugin) // 使用 new BScroll('.wrapper', { pluginKey: {} // pluginKey 对应 Plugin 类上静态属性 pluginName 的值,否则插件无法实例化 })
script 标签引入
// 引入 <script src="https://unpkg.com/@better-scroll/core@latest/dist/core.js"></script> // 压缩后的文件引入 <script src="https://unpkg.com/@better-scroll/core@latest/dist/core.min.js"></script> // 使用 let wrapper = document.getElementById("wrapper") let bs = new BScroll(wrapper, {})
注意:.wrapper 为外层包裹的 div 类名,内部滚动部分的高度应高于 wrapper 的高度,否则不滚动!
当前 BetterScroll 自带的插件有:
- mouse-wheel:扩展 BetterScroll 鼠标滚轮的能力,目前支持鼠标滚轮有:core、slide、wheel、pullup、pulldown。
- observe-dom:开启对 content 以及 content 子元素 DOM 改变的探测。当插件被使用后,当这些 DOM 元素发生变化时,将会触发 scroll 的 refresh 方法。
- pulldown:为 BetterScroll 扩展下拉刷新的能力。
- pullup:为 BetterScroll 扩展上拉加载的能力。
- scrollbar:为 BetterScroll 提供了样式美观的滚动条,当滚动停止的时候,滚动条渐隐。
- slide:为 BetterScroll 扩展了轮播焦点图的能力。
- wheel:为 BetterScroll 提供了实现类似 IOS Picker 组件的能力,注意:只是实现 Picker 效果的 JS 逻辑部分, DOM 模版需要用户去实现。
- zoom:为 BetterScroll 提供缩放功能。
- nested-scroll:协调 BetterScroll 双层嵌套的滚动行为,目前只解决了双层嵌套问题,比如竖向套竖向、横向套横向。
- infinity:为 BetterScroll 提供了无限滚动的能力。如果有大量的列表数据需要渲染,可以使用 infinity 插件,此时 BetterScroll 只会渲染一定数量的 DOM 元素,从而使页面在大量数据时依然保持流畅滚动,数据量小则使用 core 即可。
- movable:为 BetterScroll 拓展可移动拖拽的能力。
上述插件功能不能满足你的要求的话,可自行开发一些插件。
评论 抢沙发