当前位置: 首页 > 编程日记 > 正文

Vue+element UI实现“回到顶部”按钮组件

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/caomage/article/details/85006973

背景

开发框架是vue+webpack+element-ui,需要一个回到顶部的通用组件。

开发

HTML部分

code:

<template><transition name="el-fade-in"> <div class="page-up" @click="scrollToTop" v-show="toTopShow"> <i class="el-icon-caret-top"></i> </div> </transition> </template>

这里使用了一个进入动画,看起来自然一点。

CSS部分

code:

<style scoped lang="scss">.page-up{ background-color: #409eff; position: fixed; right: 50px; bottom: 30px; width: 40px; height: 40px; border-radius: 20px; cursor: pointer; transition: .3s; box-shadow: 0 3px 6px rgba(0, 0, 0, .5); opacity: .5; z-index: 100; .el-icon-caret-top{ color: #fff; display: block; line-height: 40px; text-align: center; font-size: 18px; } p{ display: none; text-align: center; color: #fff; } &:hover{ opacity: 1; } } </style>

这也没啥说的,自己觉得好看就行。

JavaScript部分

这里是重点了,主要是监听两个事件:

屏幕滚动事件 回到顶部按钮的点击事件

屏幕滚动事件

code:

mounted() {this.$nextTick(function () { window.addEventListener('scroll', this.handleScroll,true); }); }, destroyed() { window.addEventListener('scroll', this.handleScroll,true); }

这里有两个注意事项:

注意是将事件绑定在window上,监听整个文档的滚动,也可以绑在document或者document.body上 需要在元素加载之后再监听滚动事件 需要将addEventListener的第三个参数设置为true,即取消冒泡,要不然会绑定不成功

code:

handleScroll() {let dom =document.getElementsByClassName('content-container')[0]; this.scrollTop = dom.scrollTop; if (this.scrollTop > 300) { this.toTopShow = true; }else { this.toTopShow = false; } },

这里需要注意的地方是:

一开始不必将回到顶部按钮显示出来,等用户将页面往下滑动一段距离之后再显示回到顶部按钮,这样更加符合用户的操作习惯

回到顶部按钮的点击事件

code:

scrollToTop() {let timer = null; let _this = this; cancelAnimationFrame(timer); timer = requestAnimationFrame(function fn() { if (_this.scrollTop > 5000) { _this.scrollTop -= 1000; document.getElementsByClassName("content-container")[0].scrollTop = _this.scrollTop; timer = requestAnimationFrame(fn); } else if (_this.scrollTop > 1000 && _this.scrollTop <= 5000) { _this.scrollTop -= 500; document.getElementsByClassName("content-container")[0].scrollTop = _this.scrollTop; timer = requestAnimationFrame(fn); } else if (_this.scrollTop > 200 && _this.scrollTop <= 1000) { _this.scrollTop -= 100; document.getElementsByClassName("content-container")[0].scrollTop = _this.scrollTop; timer = requestAnimationFrame(fn); } else if (_this.scrollTop > 50 && _this.scrollTop <= 200) { _this.scrollTop -= 10; document.getElementsByClassName("content-container")[0].scrollTop = _this.scrollTop; timer = requestAnimationFrame(fn); } else if (_this.scrollTop > 0 && _this.scrollTop <= 50) { _this.scrollTop -= 5; document.getElementsByClassName("content-container")[0].scrollTop = _this.scrollTop; timer = requestAnimationFrame(fn); } else { cancelAnimationFrame(timer); _this.toTopShow = false; } }); }

这里需要主要几点:

使用requestAnimationFrame,优点就不必多说了 正常情况下回到顶部的速度是由快变慢的,这样看起来更加符合用户的使用习惯,而且效果也更加好看 将距离顶部的距离划分为五个部分,每个部分的速度都不一样

调用

全部页面调用

  • 操作App.vue
  • 添加JavaScript代码
<script>
import ScrollTop from './components/ScrollTop.vue' export default { components: { 'scroll-top':ScrollTop, } } </script>
  • 页面中引用
<scroll-top></scroll-top>

大功告成!

单个页面调用

操作需要调用该组件的页面文件即可,方法同上。

转载于:https://www.cnblogs.com/baoshuyan66/p/10832381.html

相关文章:

根据xml 文件生成 xsd文件 以及相关测试方法

1、下载trang.jar 下载地址&#xff1a; http://www.java2s.com/Code/Jar/t/Downloadtrang20091111jar.htm 2、用法介绍 将trang.jar 包 和xml 文件放到同一个目录下 执行以下命令 java -jar trang.jar a.xml a.xsd 3、测试类 public class CheckXML {public static voi…

十一运夺金基础数据采集工具

点击下载 转载于:https://www.cnblogs.com/JiangHuakey/archive/2010/11/17/1880139.html

[HNOI 2010]Bounce 弹飞绵羊

Description 某天&#xff0c;Lostmonkey发明了一种超级弹力装置&#xff0c;为了在他的绵羊朋友面前显摆&#xff0c;他邀请小绵羊一起玩个游戏。游戏一开始&#xff0c;Lostmonkey在地上沿着一条直线摆上n个装置&#xff0c;每个装置设定初始弹力系数ki&#xff0c;当绵羊达到…

WordPress首页调用QQ签名

我的博客&#xff1a;http://Yourtion.TK 看到我的博客的朋友一定注意到我的页面旁边一个QQ签名的实时显示&#xff0c;如下图&#xff1a; 是怎么实现的呢&#xff1f;&#xff1f;下面一步步告诉你。希望对你有帮助。 首先登陆QQ滔滔首页&#xff1a;http://www.taotao.com/并…

断网,启用网络,关机的实现。

windows 下实现 shutdown_two.c 此为第三版 // 我需要一个断开网络&#xff0c;启用网络&#xff0c;定时发送邮件后关机的功能&#xff0c;其中定时发送邮件功能是邮件客户端完成&#xff1b;原来的工具是用bat实现的&#xff0c;后来给BAT内容放到C中&#xff0c;延时部分用…

BaseTDI.sys 瑞星卡巴冲突,导致机器蓝屏

今天中午在给本次评教活动导入各学院10级学生信息时&#xff0c;多次出现蓝屏&#xff0c;其主要错误信息为 “BaseTDI.SYS Address 9188783F base at 91887000 Data Stamp 45a47636”.并且 提示“crash dump …..&#xff08;系统崩溃&#xff09;”. 于是&#xff0c…

【22,23节】Django的GET和POST属性笔记

COOKIES&#xff1a;一个标准的python字典对象&#xff0c;包含所有cookies&#xff0c;键和值都为字符串session&#xff1a;一个即能读又能写的类似字典对象&#xff0c;表示当前的会话&#xff0c;只有当django启用会话的支持时才可用 一键多值的GET[]只能接收到最后一个值&…

dataTable 表格组件刷新 问题记录

1 、 重绘 使用fnDraw() 进行刷新表格使用的前体是开启了服务端分页和查询时使用此进行刷新表格 fnDraw(boolean)true : 表示整体刷新 且刷新后 到起始页 false &#xff1a; 刷新后在刷新前的页 2、 $(#confess-table-info).DataTable().ajax.reload()重绘 使用此方法进行…

旺铺免费,淘宝的义务不能免

旺铺免费&#xff0c;淘宝的义务不能免阿祥春节前夕&#xff0c;淘宝网免费开放“旺铺扶持版”&#xff0c;降低创业门槛&#xff0c;希望帮助更多中小卖家快速成长。从大道理上讲&#xff0c;旺铺免费&#xff0c;是淘宝所承担的社会责任&#xff0c;既为政府分忧&#xff0c;…

下载安装 binary editor

http://www.eecanalyzer.net/downloads 转载于:https://www.cnblogs.com/sea-stream/p/10842190.html

使用Mpvue 使用 scroll-view 记录以及 页面设置弹窗后 页面滚动问题

1、scroll-view 使用 <scroll-view scroll-y"true"class"msg-list"scrolltolower"scrolltolower"scroll"scroll"> </scroll-view> methods: {scrolltolower(){console.log(7)},scroll(e) {console.log(6)console.log(e…

YOLOv10环境搭建、模型预测和ONNX推理

运行后会在文件yolov10s.pt存放路径下生成一个的yolov10s.onnxONNX模型文件。安装完成之后,我们简单执行下推理命令测试下效果,默认读取。终端,进入base环境,创建新环境。(1)onnx模型转换。

时间不同单位之间的转换

在观察仿真波形的时候&#xff0c;经常会出现微妙&#xff0c;毫秒&#xff0c;皮秒之间的转换&#xff0c;出现过错误&#xff0c;每次记不清楚的时候还要重新查资料&#xff0c;现总结如下. 秒&#xff08;second&#xff09;是国际单位制中时间的基本单位&#xff0c;符号是…

关于Javascript的内存泄漏问题的整理稿

常规循环引用内存泄漏和Closure内存泄漏 要了解javascript的内存泄漏问题&#xff0c;首先要了解的就是javascript的GC原理。 我记得原来在犀牛书《JavaScript: The Definitive Guide》中看到过&#xff0c;IE使用的GC算法是计数器&#xff0c;因此只碰到循环 引用就会造成mem…

C#计算两个日期的相隔天数

DateTime start Convert.ToDateTime(dateStart.ToShortDateString()); DateTime end Convert.ToDateTime(dateEnd.ToShortDateString()); TimeSpan sp end.Subtract(start); int days sp.Days;转载于:https://www.cnblogs.com/weimingxin/p/8109234.html

.NET 端口监听

1.直接调用微软socket对象处理 static void Main(string[] args){try{IPAddress ip new IPAddress(new byte[] { 127, 0, 0, 1 });//在3721端口新建一个TcpListener对象TcpListener listener new TcpListener(ip, 3721); listener.Start();Console.WriteLine("started l…

微信小程序导航栏设置透明

使用的时Mpvue 在app.json 文件中设置 "window": {"navigationStyle": "custom"},

epub 电子书软件代码销售

epub 电子书软件代码销售本套代码用来读取epub 格式电子书。主要面向&#xff1a;有一定开发能力的人员&#xff0c;和有一定制作水平的朋友们。用途&#xff1a;自己开发学习&#xff0c;钻研&#xff0c;出appstore 应用&#xff0c;卖钱&#xff0c;加广告赚钱等。&#xff…

重新编译iptables

重新编译iptables一&#xff0e;重新编译后的内核版本为&#xff1a;<?xml:namespace prefix st1 ns "urn:schemas-microsoft-com:office:smarttags" />2.6.28.10重新编译后的iptables的版本为&#xff1a;1.4.4&#xff0c;新添加了layer7的模块&#xff0…

爬虫之Xpath详解

爬虫之Xpath详解 XPath介绍 XPath 是一门在 XML 文档中查找信息的语言。XPath 可用来在 XML 文档中对元素和属性进行遍历。 XPath 是 W3C XSLT 标准的主要元素&#xff0c;并且 XQuery 和 XPointer 都构建于 XPath 表达之上。 因此&#xff0c;对 XPath 的理解是很多高级 XML 应…

非常认同的《SEO优化大全》

1、每个网页标题简洁&#xff0c;不超过30字。  2、每个网页核心关键词不超过3个。如果可以&#xff0c;你要学会放弃。  3、最重要的关键词放在标题首位&#xff0c;依次类推。  4、网站的描述&#xff0c;简洁&#xff0c;明了&#xff0c;最开始和结束部分自然出现关键…

python中tornado的第一个例子

python中tornado的第一个例子 1 先安装tornado pip install tornado 2 新建tor.py 记住不能建立 tornado.py 这样的名字 不然会报错 ImportError: No module named tornado.ioloop; tornado is not a package import tornado.ioloop import tornado.webclass MainHandler(tor…

docker 安装和使用

目录 1、安装docker的官方网站 配置镜像加速器 查看docker安装的版本 重启docker 启动 docker 查看启动的状态 下载测试镜像 并且启动该容器 2、操作docker 镜像的常用命令 搜索镜像 下载镜像 列出镜像 删除本地镜像 保存镜像到本地 加载镜像到docker仓库 构…

不编译内核加载connlimit模块

转载于:https://blog.51cto.com/sookk8/280372

记录一下g++的编译选项

假设main.cpp,hello.h,hello.cpp,其中main.cpp调用了hello类中的方法 1 生成hello.so g -shared hello.cpp -olibhello.so 2 编译main.cpp,并链接,并指定运行时libhello.so的位置 g main.cpp -lhello -L./ -Wl,-rpath./ -o main 值得一提的是,如果采用带版本号的库,例如libhell…

JSP中是EL表达式与JSTL

EL语法&#xff1a;${ } EL取值来自于作用域对象 1.如何从指定作用域取值(默认从最小作用域取值)   pageScope、requestScope、sessionScope、applicationScope   ${pageScope.xxx }--- ${requestScope.xxx} --- ${sessionScope.xxx } 2.用EL取出请求参数中的数据   EL表…

数据库连接无法释放

问题已解决,发现是数据库连接无法释放,不知道是什么原因,同样的代码在本地就是好的,在服务器端就有问题,最后在连接串里加入以下语句解决问题. Poolingtrue; MAX Pool Size512;Min Pool Size50;Connection Lifetime30 转载于:https://www.cnblogs.com/tianciliangen/p/8110625.…

mpvue 引入自己创建的js 文件 到其他的文件中

1、mpvue 引入外部js 文件 中的方法 如果需要调用外部的js文件中的方法 需要按照以下的格式进行写 创建方法&#xff0c;将方法抛出 /** * 七牛上传文件 工具方法 **/ function getToken() {console.info("进来了"); } export {getToken }在其他的文件中使用 im…

DirectShow camera demo

我在编译SDK自带的Cameracapture的例子时&#xff0c;出现 生成: 0 已成功, 1 已失败, 0 最新, 0 已跳过 1> ------ 已启动生成: 项目: CameraCapture, 配置: Release Windows Mobile 5.0 Pocket PC SDK (ARMV4I) ------ 1> 正在链接... 1> graphmanager.obj : …

Uva 11400 - Lighting System Design (DP)

题目链接 https://cn.vjudge.net/problem/UVA-11400【题意】你的任务是设计一个照明系统&#xff0c;一共有n&#xff08;n<1000&#xff09;个灯泡可以选择&#xff0c;不同种类的灯必须使用不同的电源&#xff0c;但同种灯泡可以共用一个电源&#xff0c;每种灯泡有4个属性…