gotoTop.vue 1.04 KB
<template>
	<div class="goto-top" @click="gotoTop" v-show="isShow || top == '0'">
		<img src="static/img/icon_goto_top.png" class="goto-top-img" />
	</div>
</template>

<script>
	export default {
		data() {
			return {
				isShow: false
			};
		},
		props: {
			top: {
				type: Number,
				default: 100
			}

		},
		methods: {

			/**
			 * 回到顶部
			 */
			gotoTop() {
				document.documentElement.scrollTop = document.body.scrollTop = 0;
			},

			scrollEventListener() {
				if ((document.documentElement.scrollTop || document.body.scrollTop) >= this.top) {
					this.$set(this, "isShow", true);
				} else {
					this.$set(this, "isShow", false);
				}
			}
		},
		mounted() {

			// 监听滚动条位置
			window.addEventListener("scroll", this.scrollEventListener);
		},
		beforeDestroy() {

			// 取消监听滚动条
			window.removeEventListener("scroll", this.scrollEventListener);
		}
	}
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<style rel="stylesheet/less" lang='less' scoped>
	@import './gotoTop';
</style>