轻量级滚动插件ScrollBooster

插件特效
2026-07-25 22:36 2 次浏览 • 0 次下载 25.6KB
轻量级滚动插件ScrollBooster

发布时间:2018-3-30 1:49

ScrollBooster大小只有2kb

安装

您可以通过npm软件包管理器安装它,或者直接删除脚本标签:

1
npm i scrollbooster

引用js文件

用法

1
2
3
4
5
import ScrollBooster from 'scrollbooster'
let sb = new ScrollBooster({
viewport: document.querySelector('.viewport') // required
// ...other options
})

选项

OptionTypeDefaultDescription
viewportelementnull视区-外部元素
contentelementFirst child of viewport element视区内可滚动内容
handleelementViewport element响应拖动事件的元素
bouncebooleantrue惯性弹跳效果 (滚动过去视区边框)
textSelectionbooleanfalse能够选择文本内容
frictionfloat0.05滚动摩擦因数 (指针释放后的滚动惯性)
bounceForcefloat0.1弹跳效应因子
emulateScrollbooleanfalse模拟视区鼠标滚轮事件 (对于使用转换属性滚动的情况)
onUpdatefunctionnoop根据接收的坐标更新元素属性的用户函数 (请参见演示示例)。接收具有属性的对象: 位置、视区和内容。每个属性都包含用于执行实际滚动的度量值

方法

MethodDescription
setPosition在视区中设置新的滚动位置。接收具有属性 x 和 y 的对象
updateMetrics更新元素大小。对图像加载或其他动态内容有用
getUpdate与onUpdate相同的格式返回当前指标和坐标
destroy销毁所有实例的事件侦听器

完整示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
let viewport = document.querySelector('.viewport')
let content = document.querySelector('.viewport-content')
let sb = new ScrollBooster({
viewport: viewport,
content: content,
handle: document.querySelector('.viewport-scroller'),
bounce: true,
textSelection: false,
emulateScroll: false,
onUpdate: (data)=> {
content.style.transform = `translate(
${-data.position.x}px,
${-data.position.y}px
)`
// and also metrics: data.viewport['width'|'height'] and data.cotent['width'|'height']
}
})
// methods example:
sb.updateMetrics()
sb.setPosition({
x: 100,
y: 100
})
sb.destroy()