在形目中经常要实现回到顶部的效果,所以我在这做了一个回到顶部的插件。

首先,我们先在这说明一下,实现回到顶部的效果所要满足的要求为:要实现回到顶部效果的盒子必须出现横向滚动条。

子组件如下所示:

原理为监听元素的scroll距离,根据距离判断其滚动距离及滚动速度,和按钮的显示隐藏。

<template><div><div class="page-up" @click="scrollToTop" v-show="toTopShow"><span class="iconfont  scrollTop"></span></div></div>
</template><script>
export default {name: 'scrollTop',data () {return {toTopShow: false}},mounted () {this.$nextTick(function () {window.addEventListener('scroll', this.handleScroll, true)})},destroyed () {window.addEventListener('scroll', this.handleScroll, true)},methods: {handleScroll () {let dom = document.getElementsByClassName('content')[0]this.scrollTop = dom.scrollTopif (this.scrollTop > 300) {this.toTopShow = true} else {this.toTopShow = false}},scrollToTop () {let timer = nulllet _this = thiscancelAnimationFrame(timer)timer = requestAnimationFrame(function fn () {if (_this.scrollTop > 5000) {_this.scrollTop -= 1000document.getElementsByClassName('content')[0].scrollTop =_this.scrollToptimer = requestAnimationFrame(fn)} else if (_this.scrollTop > 1000 && _this.scrollTop <= 5000) {_this.scrollTop -= 500document.getElementsByClassName('content')[0].scrollTop =_this.scrollToptimer = requestAnimationFrame(fn)} else if (_this.scrollTop > 200 && _this.scrollTop <= 1000) {_this.scrollTop -= 100document.getElementsByClassName('content')[0].scrollTop =_this.scrollToptimer = requestAnimationFrame(fn)} else if (_this.scrollTop > 50 && _this.scrollTop <= 200) {_this.scrollTop -= 10document.getElementsByClassName('content')[0].scrollTop =_this.scrollToptimer = requestAnimationFrame(fn)} else if (_this.scrollTop > 0 && _this.scrollTop <= 50) {_this.scrollTop -= 5document.getElementsByClassName('content')[0].scrollTop =_this.scrollToptimer = requestAnimationFrame(fn)} else {cancelAnimationFrame(timer)_this.toTopShow = false}})}}
}
</script><style scoped>.page-up{background-color: #F7F7F7;position: fixed;right: 30px;bottom: 55px;width: 40px;height: 40px;line-height: 40px;text-align: center;border-radius: 20px;cursor: pointer;transition: .3s;box-shadow: 0 3px 6px rgba(0, 0, 0, .5);opacity: .5;z-index: 100;}.scrollTop {font-size: 40px;z-index: 10000;}</style>

在这需要说明的是:子组件中的content为滚动的盒子的类名:

组件的使用:

在你所需要的组件中引入即可:

基于Vue项目的回到顶部插件相关推荐

  1. vue项目实现回到顶部的两种超简单方法

    vue 中实现回到顶部的两种方式: (1)锚点方式 通过点击锚点回到指定位置: <template><div id="topAnchor" ref="f ...

  2. Vue项目页面回到顶部

    实现的方法: 一.借助element-plus框架的Backtop回到顶部组件(点击按钮缓慢回顶部) 注意:这个组件想显示出来,必须放到产生滚动效果的元素内部,且是放到最上面!所以必须明确是哪个元素有 ...

  3. 基于 Vue BootStrap的迷你Chrome插件

    代码地址如下: http://www.demodashi.com/demo/14306.html 安装 安装 Visual Studio Code 和Chrome, 自行翻墙 详细安装这里略过 安装包 ...

  4. 实战:vue项目中导入swiper插件

    版本选择 swiper是个常用的插件,现在已经迭代到了第四代:swiper4. 常用的版本是swiper3和swiper4,我选择的是swiper3. 安装 安装swiper3的最新版本3.4.2: ...

  5. 解决:vue项目中页面顶部和左边出现空白

    vue项目中页面顶部和左边出现空白 本次问题是调试login.vue页面时出现的.发现页面顶部和左边出现不应该出现的空白后,打开f12,查看.发现左边的空白是body的margin.于是在本页面css ...

  6. vue-select-tu--一款基于vue的多元图形选择插件

    vue-select-tu 一款基于vue的多元图形选择插件 Table of Contents Security Install Usage Maintainers Contributing Lic ...

  7. vue项目引入社交分享插件

    vshare 基于百度分享开发的支持VUE2.X的分享插件,为您带来更多的流量!提供多种风格按钮,代码加载更快,引入社会化流量,提升网页抓取速度等优点. github地址:https://github ...

  8. 基于vue简单封装的iframe插件,可修改样式,隐藏滚动条

    最近有空,就抽空把以前做过的公司业务组件慢慢抽离出来做成插件,也算是对近年来的技术方面做一个总结吧. 今天要写的是一个用vue-jsx封装的iframe插件,可修改iframe中的样式,隐藏滚动条,默 ...

  9. vue项目中使用视频插件

    昨天写一个非物质文化遗址展览项目需要用到视频播放这块, 所以了我就在网站找了一下插件最后确定了就用 vue-vedio-player 首先我们先安装这个插件 npm install vue-video ...

最新文章

  1. Linux_学习_01_常用命令大全
  2. 重磅推荐!机器学习|深度学习|自然语言处理 书籍/课程/资料/资源大分享!
  3. CVE-2017-0004相关lsass拒绝服务漏洞杂谈
  4. ECShop显示某商品销售累计
  5. Java xml 工具 JDOM 使用详解.
  6. CVPR 2018 RASNet:《Learning Attentions: Residual Attentional Siamese Network for Tracking》论文笔记
  7. bool c语言_C/C++编程笔记:C语言结构体—位域,如何指定成员变量所占Bit?
  8. 计算机组成原理题库带答案详解,计算机组成原理试试题库(含答案解析) -.doc
  9. C#算法设计排序篇之05-归并排序(附带动画演示程序)
  10. NB-IoT适用于电子门锁通信吗?
  11. VC++ (四)动态内存
  12. 使用python制作ArcGIS插件(1)工具介绍
  13. 一款好用的绘图软件Draw.io,比Visio好用
  14. 字符串的编码格式转换
  15. 大一新生c语言实验报告总结,实验报告总结
  16. 字符串大小写字母转换c 语言,C语言中对字母进行大小写转换的简单方法
  17. sql 修改时间正价 2天_“熬夜3天,修改17遍,我终于写出了1篇稿费2万的稿子”...
  18. 什么认证在云计算行业内的含金量最大?考试费用贵不贵?
  19. 目前流行的装修风格_现在最流行的装修风格有哪些?
  20. C语言递归之苹果分盘问题

热门文章

  1. 【java初学】面向对象继承
  2. 骁龙8+gen1和a15差距 骁龙8+和苹果a15对比哪个好
  3. 原生JS实现Promise(详解)
  4. python画点连线_python matplotlib 在指定的两个点之间连线方法
  5. 左手咖啡,右手小鹿茶,你真的看懂了瑞幸咖啡的“阳谋”?
  6. android view 曝光,Android 曝光采集(商品view曝光量的统计)第二弹
  7. 推荐几个好用的在线编译器
  8. python将英文翻译为中文_Python使用百度翻译开发平台实现英文翻译为中文功能示例...
  9. 如何面试Java中级开发(16k)试题讲解和Java学习
  10. 微信公众号支付WeixinJSBridge