refactor[ScrollBar]: use el-scrollbar (#90)
parent
57f011d280
commit
f01a1ad7b7
@ -1,57 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div class="scroll-container" ref="scrollContainer" @wheel.prevent="handleScroll" >
|
|
||||||
<div class="scroll-wrapper" ref="scrollWrapper" :style="{top: top + 'px'}">
|
|
||||||
<slot></slot>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
const delta = 15
|
|
||||||
|
|
||||||
export default {
|
|
||||||
name: 'scrollBar',
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
top: 0
|
|
||||||
}
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
handleScroll(e) {
|
|
||||||
const eventDelta = e.wheelDelta || -e.deltaY * 3
|
|
||||||
const $container = this.$refs.scrollContainer
|
|
||||||
const $containerHeight = $container.offsetHeight
|
|
||||||
const $wrapper = this.$refs.scrollWrapper
|
|
||||||
const $wrapperHeight = $wrapper.offsetHeight
|
|
||||||
if (eventDelta > 0) {
|
|
||||||
this.top = Math.min(0, this.top + eventDelta)
|
|
||||||
} else {
|
|
||||||
if ($containerHeight - delta < $wrapperHeight) {
|
|
||||||
if (this.top < -($wrapperHeight - $containerHeight + delta)) {
|
|
||||||
this.top = this.top
|
|
||||||
} else {
|
|
||||||
this.top = Math.max(this.top + eventDelta, $containerHeight - $wrapperHeight - delta)
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
this.top = 0
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style rel="stylesheet/scss" lang="scss" scoped>
|
|
||||||
@import '../../styles/variables.scss';
|
|
||||||
|
|
||||||
.scroll-container {
|
|
||||||
position: relative;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
background-color: $menuBg;
|
|
||||||
.scroll-wrapper {
|
|
||||||
position: absolute;
|
|
||||||
width: 100%!important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
Loading…
Reference in New Issue