一个沙雕的vue backtop组件

8 篇文章 0 订阅

效果:
在这里插入图片描述

代码:

<template>
  <div class="back-top">
    <div >
      <img src="imgsrc" class="line" :class="isHide? 'isHide': 'isShow'" :style="{display: (firstShow? 'block': 'none')}" @click="backTop">
    </div>
  </div>
</template>

<script>
export default {
  name: "backTop",
  data(){
    return {
      firstShow: false,//初始化隐藏组件
      isHide: false,
      scrollFLag: true,
    }
  },
  created() {
    document.addEventListener('scroll', () => {
      let scroll = document.documentElement.scrollTop
      if(scroll > 200){
        this.isHide = false
        this.firstShow = true
      }else{
        this.isHide = true
      }
    })
  },
  methods: {
    backTop(){
      if(this.scrollFLag){
        this.scrollFLag = false
        //屏幕高度
        let scroll = document.documentElement.scrollTop
        let scrollTimer =  setInterval(()=> {
          scroll -= 50
          document.documentElement.scrollTop =  Math.max(scroll, 0)
          if( scroll <= 0){
            clearInterval(scrollTimer)
          }
        }, 10)
        this.scrollFLag = true
      }
    },
  },
}
</script>

<style scoped lang="scss">
.back-top{
  position: fixed;
  top: 0;
  right: 10vw;
  width: 20px;
  height: 500px;
  z-index: 200;
  .line{
    width: 12vw;
    height: 100%;
    z-index: 20;
    cursor: pointer;
    opacity: 0.8;
    transform: translateY(-100%);
    &:hover{
      opacity: 1;
    }
  }
  .isShow{
    animation: back-top-move 0.5s forwards linear, back-top-yurayura 2s 0.6s forwards linear infinite;
  }
  .isHide{
    animation: back-top-hide 0.5s forwards linear;
  }
}

@keyframes back-top-hide {
  from {
    transform: translateY(0);
  }
  to {
    transform: translateY(-100%);
  }
}

@keyframes back-top-move {
  to {
    transform: translateY(0);
  }
}
@keyframes back-top-yurayura {
  0%{transform-origin: top center;transform: rotate(0)}
  25%{transform-origin: top center;transform: rotate(2deg)}
  75%{transform-origin: top center;transform: rotate(-2deg)}
  100%{transform-origin: top center;transform: rotate(0)}
}
</style>
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值