mirror of
https://gitee.com/chu1204505056/vue-admin-beautiful.git
synced 2025-06-03 16:29:15 +08:00
84 lines
2.1 KiB
Vue
84 lines
2.1 KiB
Vue
<template>
|
|
<div class="better-scroll-container">
|
|
<el-row :gutter="20">
|
|
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
|
|
动画时长
|
|
<el-slider
|
|
v-model="time"
|
|
style="width: 300px"
|
|
:min="100"
|
|
:max="3000"
|
|
></el-slider>
|
|
|
|
<el-button @click="handleScrollTo(100)">滚动到100像素位置</el-button>
|
|
<el-button @click="handleScrollTo(300)">滚动到300像素位置</el-button>
|
|
<el-button @click="handleScrollBy(100)">向下滚动100像素</el-button>
|
|
<el-button @click="handleScrollBy(-50)">向上滚动50像素</el-button>
|
|
<el-button @click="handleScrollToElement(15)">滚动到第15个</el-button>
|
|
<el-button @click="handleScrollToElement(25)">滚动到第25个</el-button>
|
|
</el-col>
|
|
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
|
|
<div ref="wrapper" class="right-content">
|
|
<ul>
|
|
<li v-for="n in 100" :id="`bs-item-${n}`" :key="n">n : {{ n }}</li>
|
|
</ul>
|
|
</div>
|
|
</el-col>
|
|
</el-row>
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
import BScroll from "better-scroll";
|
|
|
|
export default {
|
|
name: "BetterScroll",
|
|
data() {
|
|
return {
|
|
time: 1000,
|
|
BS: null,
|
|
};
|
|
},
|
|
mounted() {
|
|
this.scrollInit();
|
|
},
|
|
beforeDestroy() {
|
|
this.scrollDestroy();
|
|
},
|
|
methods: {
|
|
handleScrollTo(y) {
|
|
this.BS.scrollTo(0, -y, this.time);
|
|
},
|
|
handleScrollBy(y) {
|
|
this.BS.scrollBy(0, -y, this.time);
|
|
},
|
|
handleScrollToElement(n) {
|
|
this.BS.scrollToElement(`#bs-item-${n}`, this.time);
|
|
},
|
|
scrollInit() {
|
|
this.BS = new BScroll(this.$refs["wrapper"], {
|
|
mouseWheel: true,
|
|
scrollbar: {
|
|
fade: true,
|
|
interactive: false,
|
|
},
|
|
});
|
|
},
|
|
scrollDestroy() {
|
|
if (this.BS) {
|
|
this.BS.destroy();
|
|
}
|
|
},
|
|
},
|
|
};
|
|
</script>
|
|
<style lang="scss" scoped>
|
|
.better-scroll-container {
|
|
.right-content {
|
|
height: 500px;
|
|
margin-top: 40px;
|
|
overflow: hidden;
|
|
}
|
|
}
|
|
</style>
|