2
2
3
3
Enjoyable drag-to-scroll micro library (~ 2KB gzipped). Supports smooth content scroll via mouse/touch dragging, trackpad or mouse wheel. Zero dependencies.
4
4
5
+ Easy to setup yet flexible enough to support any custom scrolling logic.
6
+
5
7
### Installation
6
8
7
9
You can install it via ` npm ` or ` yarn ` package manager or via ` script ` tag:
@@ -15,7 +17,7 @@ yarn add scrollbooster
15
17
```
16
18
17
19
``` html
18
- <script src =" https://unpkg.com/scrollbooster@2.0.0 /dist/scrollbooster.min.js" ></script >
20
+ <script src =" https://unpkg.com/scrollbooster@2/dist/scrollbooster.min.js" ></script >
19
21
```
20
22
21
23
### Usage
@@ -25,19 +27,9 @@ The most simple setup with default settings:
25
27
``` js
26
28
import ScrollBooster from ' scrollbooster' ;
27
29
28
- const viewport = document .querySelector (' .viewport' );
29
- const content = document .querySelector (' .scrollable-content' );
30
-
31
30
new ScrollBooster ({
32
- viewport,
33
- content,
34
- onUpdate : (state ) => {
35
- content .style .transform = ` translate(
36
- ${ - state .position .x } px,
37
- ${ - state .position .y } px
38
- )` ;
39
- },
40
- // other options (see below)
31
+ viewport: document .querySelector (' .viewport' ),
32
+ scrollMode: ' transform'
41
33
});
42
34
```
43
35
@@ -49,6 +41,7 @@ Option | Type | Default | Description
49
41
------ | ---- | ------- | -----------
50
42
viewport | DOM Node | null | Content viewport element (required)
51
43
content | DOM Node | viewport child element | Scrollable content element inside viewport
44
+ scrollMode | String | undefined | Scroll technique - via CSS transform or natively. Could be 'transform' or 'native'
52
45
direction | String | 'all' | Scroll direction. Could be 'horizontal', 'vertical' or 'all'
53
46
bounce | Boolean | true | Enables elastic bounce effect when hitting viewport borders
54
47
textSelection | Boolean | false | Enables text selection inside viewport
@@ -86,6 +79,7 @@ const sb = new ScrollBooster({
86
79
emulateScroll: true ,
87
80
onUpdate : (state ) => {
88
81
// state contains useful metrics: position, dragOffset, isDragging, isMoving, borderCollision
82
+ // you can control scroll rendering manually without 'scrollMethod' option:
89
83
content .style .transform = ` translate(
90
84
${ - state .position .x } px,
91
85
${ - state .position .y } px
@@ -107,7 +101,7 @@ const sb = new ScrollBooster({
107
101
108
102
// methods usage examples:
109
103
sb .updateMetrics ();
110
- sb .setPosition ({ x: 100 , y: 100 });
104
+ sb .scrollTo ({ x: 100 , y: 100 });
111
105
sb .updateOptions ({ emulateScroll: false });
112
106
sb .destroy ();
113
107
```
0 commit comments