The vue-perfect-scrollbar library lets us add a scrollbar easily into our Vue app.
In this article, we’ll look at how to add a scroll bar to our Vue app with it.
Installation
We can install the library by running:
npm install vue-perfect-scrollbar
Adding the Scrollbar
We can add a scrollbar with the library by writing:
<template>
<div id="app">
<VuePerfectScrollbar
style="height: 300px"
class="scroll-area"
v-once
:settings="settings"
@ps-scroll-y="scrollHandle"
>
<p v-for="n in 100" :key="n">{{n}}</p>
</VuePerfectScrollbar>
</div>
</template>
<script>
import VuePerfectScrollbar from "vue-perfect-scrollbar";
export default {
name: "App",
components: {
VuePerfectScrollbar
},
data() {
return {
settings: {
maxScrollbarLength: 60
}
};
},
methods: {
scrollHandle(evt) {
console.log(evt);
}
}
};
</script>
We add the VuePerfectScrollbar component to our Vue app after we registered it.
The v-once directive renders the elements and components inside once only.
settings has the settings. We set the maxScrollbarLength to set the length of the scrollbar.
It emits the ps-scroll-y event to run a method when we scroll.
Options
We can set many other options.
wheelSpeed sets the scroll speed of the mouse wheel.
wheelPropagation is a boolean to let us set whether to propagate mouse wheel events.
swipeEasing is a boolean to add easing to swipes.
minScrollbarLength is a number to set the min scrollbar length.
scrollingThreshold is a number to set the threshold for applying the ps--scrolling-x and ps--scrolling-y classes.
useBothWheelAxes is a boolean to enable vertical and horizontal scrolling.
suppressScrollX is a boolean to disable x-axis scrolling.
suppressScrollY is a boolean to disable y-axis scrolling.
scrollXMarginOffset is a number of pixels of the content that the content width can surpass the container width without enabling the x-axis scrollbar.
scrollYMarginOffset is a number of pixels of the content that the content width can surpass the container width without enabling the y-axis scrollbar.
Events
In addition to the ps-scroll-y event, the VuePerfectScrollbar component emits other events.
ps-scroll-x is emitted when we scroll horizontally.
ps-scroll-up is emitted when we scroll upward.
ps-scroll-down is emitted when we scroll downward.
ps-scroll-left is emitted when we scroll left.
ps-scroll-right is emitted when we scroll right.
ps-y-reach-start is emitted when we reach the start of the y-axis.
ps-y-reach-end is emitted when we reach the end of the y-axis.
ps-x-reach-start is emitted when we scroll to the start of the x-axis.
ps-x-reach-end is emitted when we scroll to the end of the x-axis.
Conclusion
The vue-perfect-scrollbar component lets us add a scrollbar and handle various events emitted when scrolling.