vue 回到页面顶部
模仿Element-UI 回到页面顶部
BackToTop.vue <template>
<transition :name="transitionName">
<div class="page-component-up"
@click="backToTop"
v-show="visible"
:style="customStyle">
<i class="el-icon-caret-top"></i>
</div>
</transition>
</template> <script>
export default {
name: 'BackToTop',
props: {
transitionName: {
type: String,
default: 'fade'
},
customStyle: {
type: Object
},
visibilityHeight: { // 纵向滑动多远距离出现滚动条
type: Number
},
backPosition: { // 返回顶部时,滚动到哪里(距离顶部的距离)
type: Number,
default: 0
}
},
data() {
return {
visible: false,
interval: null
}
},
mounted() {
window.addEventListener('scroll', this.handleScroll)
},
beforeDestroy() {
window.removeEventListener('scroll', this.handleScroll)
if(this.interval) {
clearInterval(this.interval)
}
},
methods: {
handleScroll() {
this.visible = window.pageYOffset > this.visibilityHeight
},
backToTop() {
let distanceY = window.pageYOffset
let i = 0
this.interval = setInterval(() => {
let next = Math.floor(this.easeInOutQuad(10 * i, distanceY, -distanceY, 500))
if(next <= this.backPosition) {
window.scrollTo(0, this.backPosition)
clearInterval(this.interval)
} else{
window.scrollTo(0, next)
}
i++
}, 17)
},
/*
缓动公式(Tween算法)
t: 动画已经执行的时间(实际上时执行多少次/帧数)
b: 起始位置
c: 终止位置
d: 从起始位置到终止位置的经过时间(实际上时执行多少次/帧数) http://www.cnblogs.com/mrsunny/archive/2011/06/21/2086080.html
*/
easeInOutQuad(t, b, c, d) {
// 判断当前时间是否总在总时间的一半以内,是的话执行缓入函数,否则的话执行缓出函数
if ((t /= d / 2) < 1) {
return c / 2 * t * t + b
} else {
// 将总长度设置为一半,并且时间从当前开始递减,对图像进行垂直向上平移
return -c / 2 * (--t * (t - 2) - 1) + b
}
}
}
}
</script> <style lang="scss" scoped>
.page-component-up{
position: fixed;
cursor: pointer;
text-align: center;
transition: .3s;
box-shadow: 0 0 6px rgba(0,0,0,.12);
z-index: 99;
i{
color: #409eff;
display: block;
line-height: inherit;
text-align: center;
font-size: 18px;
}
}
</style>
页面引用:
<template>
<div>
<h1>返回顶部</h1>
<div>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
<el-alert title="山桃红花满上头,蜀江春水拍山流。" type="success"></el-alert>
</div>
<el-tooltip placement="top" content="返回顶部">
<back-to-top
transitionName="fade"
:customStyle="myBackToTopStyle"
:visibilityHeight="300"
:backPosition="50">
</back-to-top>
</el-tooltip>
</div>
</template> <script>
import BackToTop from '@/components/BackToTop' export default {
data() {
return {
myBackToTopStyle: {
'right': '100px',
'bottom': '150px',
'width': '40px',
'height': '40px',
'border-radius': '20px',
'line-height': '40px',
'background': '#fff'
}
}
},
components: {
BackToTop
}
}
</script>
展示效果:

demo 地址:https://github.com/frwupeng517/element-admin/blob/master/src/components/BackToTop.vue
vue 回到页面顶部的更多相关文章
- 基于JS实现回到页面顶部的五种写法(从实现到增强)
这篇文章主要介绍了基于JS实现回到页面顶部的五种写法(从实现到增强)的相关资料,本文介绍的非常详细,实用性也非常高,非常具有参考借鉴价值,需要的朋友可以参考下 写法 [1]锚点 使用锚点链接是一种 ...
- JS实现回到页面顶部动画效果 2016.03.23
最近在模仿各大网站写页面样式和交互,发现好多都有回到顶部的需要,所以写了一下js,记录下来. 发现还可以添加从快到慢的动画效果和随时下拉滚动条停止滚动的功能, 参考了imooc上相关课程,最终实现JS ...
- 今天才知道a标签的href="#"是回到页面顶部
如题,真的是,做了一年多的开发,今天才知道a标签的href="#"是回到顶部.以前一直以为这是个多么了不起的功能. 顺便扩展一下滑动隐藏和显示按钮(从别处拷贝来的代码) $( do ...
- jquery点击回到页面顶部方法
1.代码实例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...
- 点击按钮回到页面顶部或者某个高度时的问题,JQUERY
$('#shang').click(function(){ $('html,body').animate({scrollTop: '0px'}, 800); }); 不能写成$(window).ani ...
- JS刷新后回到页面顶部
window.location.href = location.href; 方法一: $(window).scrollTop(0); 方法二:$('html ,body').animate({ scr ...
- 解决点击a标签返回页面顶部的问题
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- js网页返回页面顶部的小方法
咳咳,在网页出现滚动条的时候,许多网站会在右下角出现一个图标,点击可以回到页面顶部 本文就记录下js实现代码: 1.在html页面body添加dom元素 <img src="toTop ...
- jquery实现返回页面顶部功能。
<p id="back-to-top"> <span></span> </p> <script type="text ...
随机推荐
- SSIS 调试和故障排除
SSIS内置的调试工具是非常完备的,主要是设置断点和查看变量值,这是在Package的设计阶段可以使用的工具,在Package部署到服务器之后,用户还可以使用事件处理程序以实现Package出错的自我 ...
- BZOJ_3132_上帝造题的七分钟_树状数组
BZOJ_3132_上帝造题的七分钟_树状数组 Description “第一分钟,X说,要有矩阵,于是便有了一个里面写满了0的n×m矩阵. 第二分钟,L说,要能修改,于是便有了将左上角为(a,b), ...
- VMware workstation的基础使用
1. VMware workstation虚拟化平台简介2. VMware workstation提供网络资源3. VMware workstation提供存储资源4. VMware workstat ...
- 干货!分享一款windows下的磁盘分析神器。
作为开发人员的你,肯定遇到过这样的情况,120G SSD系统盘居然满载了,到底是被哪些程序占用了,包含哪些大文件,这个时候脑袋里就开始回忆了.....这对平时没有养成规范化记录安装软件好习惯的同学而言 ...
- JavaScript使用闭包实现单例模式
闭包是JS的一种特性,其中一点就是:可以将外部函数的变量保存在内存中,利用这一特性,我们可以用来实现类的单例模式. 首先需要了解何为单例模式: 意图:保证一个类仅有一个实例,并提供一个访问它的全局访问 ...
- 了解Scala反射
本篇文章主要让大家理解什么是Scala的反射, 以及反射的分类, 反射的一些术语概念和一些简单的反射例子. 什么是反射 我们知道, Scala是基于JVM的语言, Scala编译器会将Scala代码编 ...
- 一个比喻讲明Docker是什么
之前一直听运维的同事讲Docker,说弄个Docker镜像,打包些应用什么的,还有时不时地在一些帖子里见到过关于Docker的三言两语,然后自己也自我感觉良好的把它总结归纳了一下认为:"往D ...
- 死磕 java集合之ConcurrentSkipListSet源码分析——Set大汇总
问题 (1)ConcurrentSkipListSet的底层是ConcurrentSkipListMap吗? (2)ConcurrentSkipListSet是线程安全的吗? (3)Concurren ...
- Linux - 修改系统的max open files、max user processes (附ulimit的使用方法)
目录 1 问题说明 2 修改max open files 3 修改max user processes 4 附录: ulimit命令说明 1 问题说明 Linux 系统默认的max open file ...
- Java工程师必备书单
微信公众号[程序员江湖] 作者黄小斜,斜杠青年,某985硕士,阿里 Java 研发工程师,于 2018 年秋招拿到 BAT 头条.网易.滴滴等 8 个大厂 offer,目前致力于分享这几年的学习经验. ...