vue 回到顶部 backTop(自定义组件)

在这里插入图片描述

使用方式

<back-top :topHeight = 'topHeight' ,/>

使用参数

参数类型是否必填默认描述
topHeightNumber500初始出现的高度
speedNumber10初始返回的速度
setSpeedNumber20加速度
rightNumber60距离浏览器右侧的距离
bottomNumber80距离游览器下面的距离

源代码

<template>
  <div class="backTop" v-show="toTopShow" @click="handleToTop" 
  :style="{right: right + 'px', bottom: bottom +'px',}">
    <img src="../assets/img/up.png">
  </div>
</template>

<script>
  export default {
    data() {
      return {
        toTopShow: false,
        scrollTop: 0
      }
    },
    props: {
      // 开始出现的高度
      topHeight: {
        type: Number,
        default: 500
      },
      // 开始速度
      speed: {
        type: Number,
        default: 10
      },
      // 叠加速度
      setSpeed: {
        type: Number,
        default: 20
      },
      right: {
        type: Number,
        default: 60
      },
      bottom: {
        type: Number,
        default: 80
      }
    },
    mounted () {
      const self = this
      window.addEventListener('scroll', this.debounce(function () {
        self.handleScrolls()
      }, 300))
    },
    methods: {
      // 监控防抖
      debounce(fn, wait) {
        let timer = null
        return function () {
          if (timer) {
            clearTimeout(timer)
          }
          timer = setTimeout(fn, wait)
        }
      },
      // 处理滚动条的监控
      handleScrolls() {
        const scrollTop = document.documentElement.scrollTop || document.body.scrollTop
        this.scrollTop = scrollTop
        if (scrollTop > this.topHeight) {
          this.toTopShow = true
        } else {
          this.toTopShow = false
        }
      },
      // 处理回到开始位置
      handleToTop() {
        let speed = this.speed
        const setSpeed = this.setSpeed
        const self = this
        const timer = setInterval(function() {
          self.scrollTop = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop
          if (self.scrollTop > 0) {
            self.scrollTop = (self.scrollTop - speed > 0) ? (self.scrollTop - speed) : 0
            speed += setSpeed
            window.scrollTo(0, self.scrollTop)
          } else {
            clearInterval(timer)
          }
        }, 60)
      }
    }
  }
</script>

<style lang="scss" rel="stylesheet/scss" scoped>
  .backTop {
    width: 60px;
    height: 60px;
    background-color: #2C2C2C;
    border-radius: 50%;
    position: fixed;
    /*right: 60px;*/
    /*bottom: 80px;*/
    text-align: center;
    padding-top: 2px;
    cursor: pointer;
    /* 动画 */
    transition: 0.6s;
    img {
      text-align: center;
    }
  }
  .backTop:hover {
    background-color: #868880;
  }
</style>

如果感觉这篇文章对你有帮助,加个关注吧!!!

也可关注我的公众号,我们一起交流。

在这里插入图片描述

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue 中使用自定义组件包括以下几个步骤: 1. 创建自定义组件:在 Vue 项目中创建一个.vue文件,其中包含组件的模板、样式和逻辑代码。例如,创建一个名为 "MyComponent.vue" 的文件。 2. 在需要使用自定义组件的地方,引入自定义组件。可以使用 import 语句或者直接在 Vue 实例中注册组件。 - 使用 import 语句引入自定义组件: ```javascript import MyComponent from './MyComponent.vue'; ``` - 在 Vue 实例中注册组件: ```javascript Vue.component('my-component', MyComponent); ``` 3. 在 Vue 模板中使用自定义组件。在模板中使用组件的方式是将组件的标签作为普通 HTML 标签使用,并传递相应的属性和数据。 ```html <template> <div> <my-component :prop1="value1" :prop2="value2"></my-component> </div> </template> ``` 注意,这里的 "my-component" 是组件标签名,需要与注册组件时的名称保持一致。 4. 在自定义组件中,可以通过 props 接收传递给组件的数据,并在组件内部进行处理和渲染。 ```html <template> <div> <h1>{{ prop1 }}</h1> <p>{{ prop2 }}</p> </div> </template> <script> export default { props: ['prop1', 'prop2'], // 组件的其他逻辑代码 } </script> ``` 这样,你就可以在 Vue 项目中使用自定义组件了。记得在需要使用组件的地方引入自定义组件,并在模板中使用组件的标签。同时,可以通过 props 向组件传递数据,组件内部可以通过 props 接收并使用这些数据。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值