vue.js实现回到顶部动画效果


Posted in Javascript onJuly 31, 2019

最近使用vue.js做了几个页面,其中有一个回到顶部的动画效果记录下。

html如下:

<!DOCTYPE html>
<html>
 <head>
 <meta charset="UTF-8">
 <title>回到顶部</title>
 <META HTTP-EQUIV="pragma" CONTENT="no-cache"> 
 <META HTTP-EQUIV="Cache-Control" CONTENT="no-cache"> 
 <META HTTP-EQUIV="expires" CONTENT="0">
 <meta http-equiv="X-UA-Compatible" content="IE=Edge">
 <meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport"/>
 <link rel="stylesheet" href="./backTop.css" type="text/css"/>
 </head>
 <body>
 <div class="page">1</div>
 <div class="page">2</div>
 <div class="page">3</div>
 <div class="page">4</div>
 <div class="page">5</div>
 <div id="back-to-top" class="back-to-top" @click="backToTop" v-show="backTopShow" v-cloak>
 <span>回到</span>
 <span>顶部</span>
 </div>
 <script src="https://cdn.bootcss.com/vue/2.5.16/vue.min.js"></script>
 <script src="./backTop.js" type="text/javascript"></script>
 </body>
</html>

backTop.css如下:

* {
 margin: 0px;
 padding: 0px;
 border: 0;
}
 
html, body {
 width: 100%;
 height: 100%;
 position: relative;
 background: #F2F2F2;
 overflow-x: hidden;
 overflow-y: auto;
 z-index: 1;
}
 
[v-cloak] {
 display: none;
}
 
.back-to-top {
 position: fixed;
 bottom: 5px;
 right: 20px;
 z-index: 100;
 border-radius: 5px;
 box-shadow: 0px 0px 2px #222;
 padding: 8px 10px;
 cursor: pointer;
}
 
.back-to-top:hover {
 background: #5AC4D1;
}
 
.back-to-top:hover span {
 color: white;
}
 
.back-to-top span {
 display: block;
}
 
.page {
 width: 100%;
 height: 400px;
 line-height: 400px;
 text-align: center;
}
 
.page:nth-child(odd) {
 background: white;
}

backTop.js 如下:

var backTopVue = new Vue({
 el : "#back-to-top",
 data : {
 //是否显示回到顶部
 backTopShow : false,
 // 是否允许操作返回顶部
 backTopAllow : true,
 // 返回顶部所需时间
 backSeconds : 100,
 // 往下滑动多少显示返回顶部(单位:px)
 showPx : 200
 },
 mounted : function() {
 window.addEventListener("scroll", this.backTopShowOperate, true);
 },
 methods : {
 backTopShowOperate : function() {
 if (!this.backTopAllow) return;
 if (document.body.scrollTop > this.showPx) {
 this.backTopShow = true;
 } else {
 this.backTopShow = false;
 }
 },
 backToTop : function() {
 if (!this.backTopAllow) return;
 this.backToTopShow = false;
 this.backTopAllow = false;
 var step = document.body.scrollTop / this.backSeconds;
 var backTopInterval = setInterval(function() {
 if (document.body.scrollTop > 0) {
 document.body.scrollTop -= step;
 } else {
 backTopVue.backTopAllow = true;
 clearInterval(backTopInterval);
 }
 }, 1);
 }
 }
});

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
[原创]图片分页查看
Aug 28 Javascript
jquery实现人性化的有选择性禁用鼠标右键
Jun 30 Javascript
jQuery绑定事件-多种实现方式总结
May 09 Javascript
BootStrap文件上传样式超好看【持续更新】
May 10 Javascript
BootStrap入门教程(一)之可视化布局
Sep 19 Javascript
JavaScript与ActionScript3两者的同性与差异性
Sep 22 Javascript
详解Vue 多级组件透传新方法provide/inject
May 09 Javascript
webpack4 处理CSS的方法示例
Sep 03 Javascript
ionic使用angularjs表单验证(模板验证)
Dec 12 Javascript
关于在LayUI中使用AJAX提交巨坑记录
Oct 25 Javascript
Vue清除定时器setInterval优化方案分享
Jul 21 Javascript
JavaScript实现简单拖拽效果
Sep 15 Javascript
vue实现滑动超出指定距离回顶部功能
Jul 31 #Javascript
Vue实现回到顶部和底部动画效果
Jul 31 #Javascript
详解mpvue实现对苹果X安全区域的适配
Jul 31 #Javascript
vue将后台数据时间戳转换成日期格式
Jul 31 #Javascript
Vue Element UI + OSS实现上传文件功能
Jul 31 #Javascript
原生js代码能实现call和bind吗
Jul 31 #Javascript
微信小程序下拉框搜索功能的实现方法
Jul 31 #Javascript
You might like
一步一步学习PHP(5) 类和对象
2010/02/16 PHP
php生成局部唯一识别码LUID的代码
2012/10/06 PHP
PHP编程入门的基本语法知识点总结
2016/01/26 PHP
SSO单点登录的PHP实现方法(Laravel框架)
2016/03/23 PHP
thinkphp5框架实现数据库读取的数据转换成json格式示例
2019/10/10 PHP
javascript window.opener的用法分析
2010/04/07 Javascript
jQuery 源码分析笔记(2) 变量列表
2011/05/28 Javascript
JavaScript中实现异步编程模式的4种方法
2014/09/24 Javascript
JS实现带圆弧背景渐变效果的导航菜单代码
2015/10/13 Javascript
jquery遍历函数siblings()用法实例
2015/12/24 Javascript
基于javascript实现简单计算器功能
2016/01/03 Javascript
jQuery DataTables插件自定义Ajax分页实例解析
2020/04/28 Javascript
JS弹出新窗口被拦截的解决方法
2016/08/09 Javascript
JavaScript解析JSON格式数据的方法示例
2017/01/24 Javascript
JavaScript函数基础详解
2017/02/03 Javascript
图文详解Javascript中的上下文和作用域
2017/02/15 Javascript
vue用addRoutes实现动态路由的示例
2017/09/15 Javascript
微信小程序实现获取自己所处位置的经纬度坐标功能示例
2017/11/30 Javascript
如何快速解决JS或Jquery ajax异步跨域的问题
2018/01/08 jQuery
详解Angular路由之路由守卫
2018/05/10 Javascript
python ElementTree 基本读操作示例
2009/04/09 Python
遍历python字典几种方法总结(推荐)
2016/09/11 Python
用pandas按列合并两个文件的实例
2018/04/12 Python
numpy使用fromstring创建矩阵的实例
2018/06/15 Python
python+pyqt5编写md5生成器
2019/03/18 Python
python二进制读写及特殊码同步实现详解
2019/10/11 Python
python线程优先级队列知识点总结
2021/02/28 Python
纯DOM+CSS3实现简单的小风车动画
2016/09/27 HTML / CSS
彻底弄明白CSS3的Media Queries(跨平台设计)
2010/07/27 HTML / CSS
欧洲最大的婴幼儿服装及内衣公司:Petit Bateau(小帆船)
2016/08/16 全球购物
毕业自荐书
2013/12/09 职场文书
股权转让意向书
2014/04/01 职场文书
《桥》教学反思
2014/04/09 职场文书
兵马俑的导游词
2015/02/02 职场文书
Python pandas之求和运算和非空值个数统计
2021/08/07 Python
SQL Server删除表中的重复数据
2022/05/25 SQL Server