# scrollbar
# Introduciton
The scrollbar plugin provides a nice scrollbar for BetterScroll.
TIP
For v2.2.0, users can provide custom scroll bars.
# Install
npm install @better-scroll/scroll-bar --save
// or
yarn add @better-scroll/scroll-bar
# Usage
First, install the plugin via the static method BScroll.use()
import BScroll from '@better-scroll/core'
import ScrollBar from '@better-scroll/scroll-bar'
BScroll.use(ScrollBar)
pass correct scrollbar options
new BScroll('.bs-wrapper', {
scrollY: true,
scrollbar: true
})
# Demo
Vertical Scrollbar
<template> <div class="scrollbar"> <div ref="wrapper" class="scrollbar-wrapper"> <ul class="scrollbar-content"> <li v-for="i of 40" :key="i" class="scrollbar-content-item"> {{ `I am item ${i} `}} </li> </ul> </div> </div> </template>
Horizontal Scrollbar
<template> <div class="horizontal-scrollbar-container"> <div class="scroll-wrapper" ref="scroll"> <div class="scroll-content"> <div class="scroll-item" v-for="index in num" :key="index">{{index}}</div> </div> </div> </div> </template>
Custom Scrollbar
<template> <div class="custom-scrollbar-container"> <div ref="wrapper" class="custom-scrollbar-wrapper"> <img @load="onload" class="custom-scrollbar-content" :src="girlImageLink" alt=""> <!-- custom-vertical-scrollbar--> <div class="custom-vertical-scrollbar" ref="vertical"> <div class="custom-vertical-indicator"></div> </div> <!-- custom-horizontal-scrollbar--> <div class="custom-horizontal-scrollbar" ref="horizontal"> <div class="custom-horizontal-indicator"></div> </div> </div> </div> </template>
With Mousewheel
<template> <div class="mousewheel-scrollbar-container"> <div ref="wrapper" class="custom-scrollbar-wrapper"> <div class="custom-scrollbar-content"> <img @load="onload" :src="girlImageLink" alt=""> </div> <!-- custom-horizontal-scrollbar--> <div class="custom-horizontal-scrollbar" ref="horizontal"> <div class="custom-horizontal-indicator"></div> </div> </div> <div class="tip">please use your mouse-wheel</div> </div> </template>
# scrollbar options
# fade
- Type:
boolean
- Default:
true
When the scroll stops, the scrollbar fades out.
# interactive
- Type:
boolean
- Default:
false
Whether scrollbar can interacted with.
# customElements 2.2.0
- Type:
HTMLElement[]
- Default:
[]
The user provides a custom scroll bar.
// horizontal
const horizontalEl = document.getElementById('User-defined scrollbar')
new BScroll('.bs-wrapper', {
scrollY: true,
scrollbar: {
customElements: [horizontalEl]
}
})
// vertical
const verticalEl = document.getElementById('User-defined scrollbar')
new BScroll('.bs-wrapper', {
scrollY: false,
scrollX: true,
scrollbar: {
customElements: [verticalEl]
}
})
// freeScroll
const horizontalEl = document.getElementById('User-defined scrollbar')
const verticalEl = document.getElementById('User-defined scrollbar')
new BScroll('.bs-wrapper', {
freeScroll: true,
scrollbar: {
// When there are two scrollbars
// the first element of the array is the horizontal
customElements: [horizontalEl, verticalEl]
}
})
# minSize 2.2.0
- Type:
number
- Default:
8
The minimum size of the scrollbar. When the user provides a custom scrollbar, this configuration is invalid.
# scrollbarTrackClickable 2.2.0
- Type:
boolean
- Default:
false
Whether the scrollbar track allows clicking.
Note:When enabling this configuration, please ensure that the click
of BetterScroll Options is true, otherwise the click event cannot be triggered. The reason is here.
new BScroll('.bs-wrapper', {
scrollY: true,
click: true // essential
scrollbar: {
scrollbarTrackClickable: true
}
})
# scrollbarTrackOffsetType 2.2.0
- Type:
string
- Default:
'step'
After the scroll bar track is clicked, the calculation method of the scroll distance is the same as the browser's performance by default. It can be configured as 'clickedPoint'
, which means the scroll bar is scrolled to the clicked position.
# scrollbarTrackOffsetTime 2.2.0
- Type:
number
- Default:
300
the scroll time after the scrollbar track is clicked.
# fadeInTime 2.4.0
- Type:
number
- Default:
250
The duration of the animation when the scrollbar fades in.
# fadeOutTime 2.4.0
- Type:
number
- Default:
500
The duration of the animation when the scrollbar fades out.
TIP
When scrollbar
is configured as true
, the plugin uses the default plugin option.
const bs = new BScroll('.wrapper', {
scrollbar: true
})
// equals
const bs = new BScroll('.wrapper', {
scrollbar: {
fade: true,
interactive: false,
// supported in v2.2.0
customElements: [],
minSize: 8,
scrollbarTrackClickable: false,
scrollbarTrackOffsetType: 'step',
scrollbarTrackOffsetTime: 300,
// supported in v2.4.0
fadeInTime: 250,
fadeOutTime: 500
}
})
← pullup indicators →