vue项目tween方法实现返回顶部的示例代码


Posted in Javascript onMarch 02, 2018

一、场景

tween.js是一款可生成平滑动画效果的js动画库

当你要实现一个返回顶部的功能时候你会怎么做,大部分人会使用document.body.scrollTop =0;这么写就实现了功能,

不过要更加的细腻一点我们不妨用tween的缓动来实现,看看效果如何吧。

之前我们写过tween的相关文章,这里不做介绍了。

二、代码

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title></title>
    <script src="https://cdn.jsdelivr.net/npm/vue"></script>
    <style type="text/css">
      #app{width: 100%; height: 3000px;background: #CCCCCC;}
      .backTop{
        width: 1.5rem;
        height: 1.5rem;
        border: 1px solid #ff0000;
        position: fixed;
        right: 1rem;
        bottom: 2rem;
        border-radius: 50%;
        /*background: url(/static/imgs/backtop20180226.png) no-repeat 40%;*/
        background-size: 70% 100%;
      }
    </style>
  </head>
  <body>
    <div id="app">
      <div @click="backTop()" class="backTop">Top</div>
    </div>
    
    <script type="text/javascript">
      var app = new Vue({
        el:"#app",
        data:{
          
        },
        methods:{
          backTop(){
//             * t: current time(当前时间);
//             * b: beginning value(初始值);
//             * c: change in value(变化量);
//             * d: duration(持续时间)。
            var Tween = {
              Linear: function(t, b, c, d) { //匀速运动,想要实现其他的效果可以使用tween的其他方法
                return c * t / d + b; 
              }
            }
            Math.tween = Tween;
            var t = 1;
            const b = document.documentElement.scrollTop;
            const c = 50;
            const d = 5;
            const setInt = setInterval(()=>{
              t--;
              console.log(t)
              if(document.documentElement.scrollTop == 0){clearInterval(setInt)}
              console.log(t);
              const backTop = Tween.Linear(t,b,c,d);
               console.log(backTop);
              document.documentElement.scrollTop = backTop;
            },20)
          }
        }
      })
    </script>
  </body>
</html>

三、requestAnimationFrame改写setInterval方法:

methods:{
      backTop(){
        var Tween = {
          Linear: function(t, b, c, d) { //匀速
            return c * t / d + b; 
          }
        }
        Math.tween = Tween;
        var t = 1;
        const b = document.body.scrollTop;
        const c = 1;
        const d = 1;
        var timer;
        timer= requestAnimationFrame(function fn(){
          if(document.body.scrollTop > 0){
            t--;
            console.log(t)
            console.log(t);
            const backTop = Tween.Linear(t,b,c,d);
             console.log(backTop);
            document.body.scrollTop = backTop;
            timer = requestAnimationFrame(fn);
          }else{
            cancelAnimationFrame(timer)
          }
        })
      }
    }

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

Javascript 相关文章推荐
推荐:极酷右键菜单
Nov 29 Javascript
JavaScript避免内存泄露及内存管理技巧
Sep 05 Javascript
jQuery 判断图片是否加载完成方法汇总
Aug 10 Javascript
javascript常用的方法整理
Aug 20 Javascript
JavaScript绑定事件监听函数的通用方法
May 14 Javascript
Vue2.x中的Render函数详解
May 30 Javascript
vue中子组件向父组件传递数据的实例代码(实现加减功能)
Apr 20 Javascript
解决vue 按钮多次点击重复提交数据问题
May 10 Javascript
今天,小程序正式支持 SVG
Apr 20 Javascript
js实现小球在页面规定的区域运动
Jun 16 Javascript
详解JavaScript匿名函数和闭包
Jul 10 Javascript
解决vue单页面 回退页面 keeplive 缓存问题
Jul 22 Javascript
Vue2.0系列之过滤器的使用
Mar 01 #Javascript
浅谈Vue Element中Select下拉框选取值的问题
Mar 01 #Javascript
vue.js 获取select中的value实例
Mar 01 #Javascript
Vue中的slot使用插槽分发内容的方法
Mar 01 #Javascript
在vue中封装可复用的组件方法
Mar 01 #Javascript
JavaScript判断日期时间差的实例代码
Mar 01 #Javascript
Vue 父子组件的数据传递、修改和更新方法
Mar 01 #Javascript
You might like
jQuery+PHP发布的内容进行无刷新分页(Fckeditor)
2015/10/22 PHP
php+mysql+jquery实现日历签到功能
2017/02/27 PHP
laravel 多图上传及图片的存储例子
2019/10/14 PHP
js实现拖拽 闭包函数详细介绍
2012/11/25 Javascript
jquery实现控制表格行高亮实例
2013/06/05 Javascript
JS事件在IE与FF中的区别详细解析
2013/11/20 Javascript
window.open 以post方式传递参数示例代码
2014/02/27 Javascript
JS实现仿Windows7风格的网页右键菜单效果代码
2015/09/11 Javascript
JS+CSS实现的蓝色table选项卡效果
2015/10/08 Javascript
jquery判断checkbox是否选中及改变checkbox状态的实现方法
2016/05/26 Javascript
JS简单去除数组中重复项的方法
2016/09/13 Javascript
jquery实现拖动效果(代码分享)
2017/01/25 Javascript
Vue.2.0.5过渡效果使用技巧
2017/03/16 Javascript
Vue-router 类似Vuex实现组件化开发的示例
2017/09/15 Javascript
详解微信小程序实现跑马灯效果(附完整代码)
2019/04/29 Javascript
刷新页面后让控制台的js代码继续执行
2019/09/20 Javascript
vue 使用插槽分发内容操作示例【单个插槽、具名插槽、作用域插槽】
2020/03/06 Javascript
el-table树形表格表单验证(列表生成序号)
2020/05/31 Javascript
JavaScript 判断浏览器是否是IE
2021/02/19 Javascript
python处理文本文件实现生成指定格式文件的方法
2014/07/31 Python
Python smallseg分词用法实例分析
2015/05/28 Python
python插入排序算法实例分析
2015/07/03 Python
举例讲解Python中的Null模式与桥接模式编程
2016/02/02 Python
python构造函数init实例方法解析
2020/01/19 Python
从训练好的tensorflow模型中打印训练变量实例
2020/01/20 Python
python GUI库图形界面开发之PyQt5布局控件QVBoxLayout详细使用方法与实例
2020/03/06 Python
Pytorch框架实现mnist手写库识别(与tensorflow对比)
2020/07/20 Python
苏格兰在线威士忌商店:The Whisky Barrel
2019/05/07 全球购物
Marlies Dekkers内衣荷兰官方网店:荷兰奢侈内衣品牌
2020/03/27 全球购物
母婴店促销方案
2014/03/05 职场文书
成龙霸王洗发水广告词
2014/03/14 职场文书
战略合作意向书范本
2014/04/01 职场文书
本科生自荐信
2014/06/18 职场文书
教师外出学习心得体会
2016/01/18 职场文书
《所见》教学反思
2016/02/23 职场文书
MySQL 表锁定 LOCK和UNLOCK TABLES的 SQL语法
2022/04/18 MySQL