
<template>
  <div id="goTop" style="display:none">
    <div class="show-go-top" v-show="goTopShow" @click="goTop">
      <img style="width: 20px;" src="https://mgmt.dfangche.com/xxfccn/image/home/top.png"/>
      <div class="goTop">回到顶部</div>
    </div>
  </div>
</template>
<script>
  export default {
    name: "goTop",
    data() {
      return {
        scrollTop: "",
        goTopShow: false
      };
    },
    watch: {
      scrollTop(val) {
        if (this.scrollTop > 500) {
          this.goTopShow = true;
        } else {
          this.goTopShow = false;
        }
      }
    },
    methods: {
      handleScroll() {
        this.scrollTop =
          window.pageYOffset ||
          document.documentElement.scrollTop ||
          document.body.scrollTop;
        if (this.scrollTop > 500) {
          this.goTopShow = true;
        }
      },
      goTop() {
        let timer = null,
          _that = this;
        cancelAnimationFrame(timer);
        timer = requestAnimationFrame(function fn() {
          if (_that.scrollTop > 0) {
            _that.scrollTop -= 50;
            document.body.scrollTop = document.documentElement.scrollTop =
              _that.scrollTop;
            timer = requestAnimationFrame(fn);
          } else {
            cancelAnimationFrame(timer);
            _that.goTopShow = false;
          }
        });
      }
    },
    created(){
      if (typeof window !== 'undefined') {
        window.addEventListener('scroll', this.handleScroll);
      }
    },
    destroyed() {
      window.removeEventListener("scroll", this.handleScroll);
    }
  };
</script>
