基于Vue项目的回到顶部插件
在形目中经常要实现回到顶部的效果,所以我在这做了一个回到顶部的插件。
首先,我们先在这说明一下,实现回到顶部的效果所要满足的要求为:要实现回到顶部效果的盒子必须出现横向滚动条。
子组件如下所示:
原理为监听元素的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项目的回到顶部插件相关推荐
- vue项目实现回到顶部的两种超简单方法
vue 中实现回到顶部的两种方式: (1)锚点方式 通过点击锚点回到指定位置: <template><div id="topAnchor" ref="f ...
- Vue项目页面回到顶部
实现的方法: 一.借助element-plus框架的Backtop回到顶部组件(点击按钮缓慢回顶部) 注意:这个组件想显示出来,必须放到产生滚动效果的元素内部,且是放到最上面!所以必须明确是哪个元素有 ...
- 基于 Vue BootStrap的迷你Chrome插件
代码地址如下: http://www.demodashi.com/demo/14306.html 安装 安装 Visual Studio Code 和Chrome, 自行翻墙 详细安装这里略过 安装包 ...
- 实战:vue项目中导入swiper插件
版本选择 swiper是个常用的插件,现在已经迭代到了第四代:swiper4. 常用的版本是swiper3和swiper4,我选择的是swiper3. 安装 安装swiper3的最新版本3.4.2: ...
- 解决:vue项目中页面顶部和左边出现空白
vue项目中页面顶部和左边出现空白 本次问题是调试login.vue页面时出现的.发现页面顶部和左边出现不应该出现的空白后,打开f12,查看.发现左边的空白是body的margin.于是在本页面css ...
- vue-select-tu--一款基于vue的多元图形选择插件
vue-select-tu 一款基于vue的多元图形选择插件 Table of Contents Security Install Usage Maintainers Contributing Lic ...
- vue项目引入社交分享插件
vshare 基于百度分享开发的支持VUE2.X的分享插件,为您带来更多的流量!提供多种风格按钮,代码加载更快,引入社会化流量,提升网页抓取速度等优点. github地址:https://github ...
- 基于vue简单封装的iframe插件,可修改样式,隐藏滚动条
最近有空,就抽空把以前做过的公司业务组件慢慢抽离出来做成插件,也算是对近年来的技术方面做一个总结吧. 今天要写的是一个用vue-jsx封装的iframe插件,可修改iframe中的样式,隐藏滚动条,默 ...
- vue项目中使用视频插件
昨天写一个非物质文化遗址展览项目需要用到视频播放这块, 所以了我就在网站找了一下插件最后确定了就用 vue-vedio-player 首先我们先安装这个插件 npm install vue-video ...
最新文章
- Linux_学习_01_常用命令大全
- 重磅推荐!机器学习|深度学习|自然语言处理 书籍/课程/资料/资源大分享!
- CVE-2017-0004相关lsass拒绝服务漏洞杂谈
- ECShop显示某商品销售累计
- Java xml 工具 JDOM 使用详解.
- CVPR 2018 RASNet:《Learning Attentions: Residual Attentional Siamese Network for Tracking》论文笔记
- bool c语言_C/C++编程笔记:C语言结构体—位域,如何指定成员变量所占Bit?
- 计算机组成原理题库带答案详解,计算机组成原理试试题库(含答案解析) -.doc
- C#算法设计排序篇之05-归并排序(附带动画演示程序)
- NB-IoT适用于电子门锁通信吗?
- VC++ (四)动态内存
- 使用python制作ArcGIS插件(1)工具介绍
- 一款好用的绘图软件Draw.io,比Visio好用
- 字符串的编码格式转换
- 大一新生c语言实验报告总结,实验报告总结
- 字符串大小写字母转换c 语言,C语言中对字母进行大小写转换的简单方法
- sql 修改时间正价 2天_“熬夜3天,修改17遍,我终于写出了1篇稿费2万的稿子”...
- 什么认证在云计算行业内的含金量最大?考试费用贵不贵?
- 目前流行的装修风格_现在最流行的装修风格有哪些?
- C语言递归之苹果分盘问题
热门文章
- 【java初学】面向对象继承
- 骁龙8+gen1和a15差距 骁龙8+和苹果a15对比哪个好
- 原生JS实现Promise(详解)
- python画点连线_python matplotlib 在指定的两个点之间连线方法
- 左手咖啡,右手小鹿茶,你真的看懂了瑞幸咖啡的“阳谋”?
- android view 曝光,Android 曝光采集(商品view曝光量的统计)第二弹
- 推荐几个好用的在线编译器
- python将英文翻译为中文_Python使用百度翻译开发平台实现英文翻译为中文功能示例...
- 如何面试Java中级开发(16k)试题讲解和Java学习
- 微信公众号支付WeixinJSBridge