模仿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 回到页面顶部的更多相关文章

  1. 基于JS实现回到页面顶部的五种写法(从实现到增强)

    这篇文章主要介绍了基于JS实现回到页面顶部的五种写法(从实现到增强)的相关资料,本文介绍的非常详细,实用性也非常高,非常具有参考借鉴价值,需要的朋友可以参考下   写法 [1]锚点 使用锚点链接是一种 ...

  2. JS实现回到页面顶部动画效果 2016.03.23

    最近在模仿各大网站写页面样式和交互,发现好多都有回到顶部的需要,所以写了一下js,记录下来. 发现还可以添加从快到慢的动画效果和随时下拉滚动条停止滚动的功能, 参考了imooc上相关课程,最终实现JS ...

  3. 今天才知道a标签的href="#"是回到页面顶部

    如题,真的是,做了一年多的开发,今天才知道a标签的href="#"是回到顶部.以前一直以为这是个多么了不起的功能. 顺便扩展一下滑动隐藏和显示按钮(从别处拷贝来的代码) $( do ...

  4. jquery点击回到页面顶部方法

    1.代码实例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...

  5. 点击按钮回到页面顶部或者某个高度时的问题,JQUERY

    $('#shang').click(function(){ $('html,body').animate({scrollTop: '0px'}, 800); }); 不能写成$(window).ani ...

  6. JS刷新后回到页面顶部

    window.location.href = location.href; 方法一: $(window).scrollTop(0); 方法二:$('html ,body').animate({ scr ...

  7. 解决点击a标签返回页面顶部的问题

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. js网页返回页面顶部的小方法

    咳咳,在网页出现滚动条的时候,许多网站会在右下角出现一个图标,点击可以回到页面顶部 本文就记录下js实现代码: 1.在html页面body添加dom元素 <img src="toTop ...

  9. jquery实现返回页面顶部功能。

    <p id="back-to-top"> <span></span> </p> <script type="text ...

随机推荐

  1. bzoj 1210 [HNOI2004] 邮递员 插头dp

    插头dp板子题?? 搞了我一晚上,还tm全是抄的标程.. 还有高精,哈希混入,还是我比较弱,orz各种dalao 有不明白的可以去看原论文.. #include<cstdio> #incl ...

  2. BZOJ_4238_电压_树上差分+dfs树

    BZOJ_4238_电压_树上差分+dfs树 Description 你知道Just Odd Inventions社吗?这个公司的业务是“只不过是奇妙的发明(Just Odd Inventions)” ...

  3. LuoguP4234_最小差值生成树_LCT

    LuoguP4234_最小差值生成树_LCT 题意: 给出一个无向图,求最大的边权减最小的边权最小的一棵生成树. 分析: 可以把边权从大到小排序,然后类似魔法森林那样插入. 如果两点不连通,直接连上, ...

  4. BZOJ_3697_采药人的路径_点分治

    BZOJ_3697_采药人的路径_点分治 Description 采药人的药田是一个树状结构,每条路径上都种植着同种药材. 采药人以自己对药材独到的见解,对每种药材进行了分类.大致分为两类,一种是阴性 ...

  5. 【爆料】-《西悉尼大学毕业证书》UWS一模一样原件

    ☞西悉尼大学毕业证书[微/Q:865121257◆WeChat:CC6669834]UC毕业证书/联系人Alice[查看点击百度快照查看][留信网学历认证&博士&硕士&海归&a ...

  6. 【已解决】通过Package或者Package+Activity启动应用

    有时很烦人,打开要启动的apk,通过adb命令(adb shell "dumpsys activity |grep Focuse") 获取到的应用包名 无法使用adb命令(adb ...

  7. 关于CTO角色的认知

    从3月份到现在2个月过去了,整个数据平台从0到1,算是有了一个基本的样子,跌跌撞撞的勉强支撑起运营的一些基本业务,当然这仅仅是开始,下一步还要从零打造自己的UBS系统,想想都兴奋呢!接下来总结下自己这 ...

  8. CentOS7搭建本地YUM仓库,并定期同步阿里云源

    CentOS7同步阿里云镜像rpm包并自建本地yum仓库 系统环境 # cat /etc/centos-release CentOS Linux release 7.6.1810 (Core) # u ...

  9. 基于Token认证的多点登录和WebApi保护

    在文章中有错误的地方,或是有建议或意见的地方,请大家多多指正,邮箱: linjie.rd@gmail.com 一天张三,李四,王五,赵六去动物园,张三没买票,李四制作了个假票,王五买了票,赵六要直接F ...

  10. 零基础如何学Python爬虫技术?

    在作者学习的众多编程技能中,爬虫技能无疑是最让作者着迷的.与自己闭关造轮子不同,爬虫的感觉是与别人博弈,一个在不停的构建 反爬虫 规则,一个在不停的破译规则. 如何入门爬虫?零基础如何学爬虫技术?那前 ...