返回顶部的封装

在父组件中进行引入子组件

<template>
  <div>
    <!-- 
      1.调用子组件
      2.用document.documentElement.scrollTop要获取当前页面的滚动条纵坐标位置
      3.在子组件中给他设置一个li列表,然后使用v-for然后将数据循环到我们的页面当动
      4.给回到顶部设置一个点击事件,点击之后我们给他设置一个计时器
      5.点击返回顶部之后,我们点击回到顶部按钮,让距离逐渐减少,形成上划的效果
      6.如果我们的距离顶部的高度等于0的话将我们的定时器删除
     -->
    <div>回到顶部组件</div>
    <backTops></backTops>
  </div>
</template>
<script>
import backTops from '@/components/backTops.vue'
export default {
  data() {
    return {}
  },
  mounted() {},
  computed: {},
  methods: {},
  components: { backTops },
}
</script>
<style lang="scss" scoped></style>

子组件中的数据

<template>
  <div id="top">
    <p v-for="item in 200" :key="item">{{ item }}</p>
    <div @click="goTop" class="gotop" v-if="btnFlag">
      点我回到顶部
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return { btnFlag: true }
  },
  created() {},
  methods: {
    //点击返回顶部
    goTop() {
      //创建一个计时器
      var timer = setInterval(function () {
        let osTop =
          document.documentElement.scrollTop || document.body.scrollTop
        let ispeed = Math.floor(-osTop / 5)
        document.documentElement.scrollTop = document.body.scrollTop =
          osTop + ispeed

        console.log('距离顶部的位置', ispeed)
        console.log('当前元素的和当前页面体的位置', osTop)
        if (ispeed === 0) {
          clearInterval(timer)
        }
      }, 30)
    },
  },
}
</script>

<style scoped lang="scss">
#top {
  width: 100%;
  // border: 1px solid red;
  p {
    text-align: center;
  }
  .gotop {
    width: 40px;
    height: 40px;
    bottom: 10%;
    right: 5%;
    border: 1px solid #eee;
    position: fixed;
    text-align: center;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
  }
}
</style>

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值