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 相关文章推荐
web页面数据展示新想法(json)
Jun 08 Javascript
javascripit实现密码强度检测代码分享
Dec 12 Javascript
jquery自动将form表单封装成json的具体实现
Mar 17 Javascript
jquery序列化方法实例分析
Jun 10 Javascript
详解AngularJS中的http拦截
Feb 09 Javascript
js实现目录链接,内容跟着目录滚动显示的简单实例
Oct 15 Javascript
BootStrap Fileinput的使用教程
Dec 30 Javascript
BootStrap便签页的简单应用
Jan 06 Javascript
微信端开发--登录小程序步骤
Jan 11 Javascript
JavaScript偏函数与柯里化实例详解
Mar 27 Javascript
百度小程序之间的页面通信过程详解
Jul 18 Javascript
深入理解令牌认证机制(token)
Aug 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
PHP用strstr()函数阻止垃圾评论(通过判断a标记)
2013/09/28 PHP
YII Framework框架教程之缓存用法详解
2016/03/14 PHP
详谈symfony window下的安装 安装时候出现的问题以及解决方法
2017/09/28 PHP
CSS中一些@规则的用法小结
2021/03/09 HTML / CSS
IE7中javascript操作CheckBox的checked=true不打勾的解决方法
2009/12/07 Javascript
再次分享18个非常棒的jQuery表格插件
2011/04/10 Javascript
JS 自定义带默认值的函数
2011/07/21 Javascript
javascript实现信息的显示和隐藏如注册页面
2013/12/03 Javascript
javascript 数字格式化输出的实现代码
2013/12/10 Javascript
jQuery自带的一些常用方法总结
2014/09/03 Javascript
利用HTML5的画布Canvas实现刮刮卡效果
2015/09/06 Javascript
bootstrap基本配置_动力节点Java学院整理
2017/07/14 Javascript
Vue按需加载的具体实现
2017/12/02 Javascript
解决vue打包后刷新页面报错:Unexpected token
2019/08/27 Javascript
js模拟实现烟花特效
2020/03/10 Javascript
python在windows和linux下获得本机本地ip地址方法小结
2015/03/20 Python
python实现简单加密解密机制
2019/03/19 Python
python 杀死自身进程的实现方法
2019/07/01 Python
Python代码太长换行的实现
2019/07/05 Python
详解Python 重学requests发起请求的基本方式
2020/02/07 Python
使用opencv中匹配点对的坐标提取方式
2020/06/04 Python
Crocs美国官方网站:卡骆驰洞洞鞋
2017/08/04 全球购物
Expedia挪威官网:酒店、机票和租车
2018/03/03 全球购物
北美主要的汽车零部件零售商:AutoShack.com
2019/02/23 全球购物
俄罗斯EPL钻石珠宝店:ЭПЛ
2019/10/22 全球购物
公司员工的自我评价范例
2013/11/01 职场文书
网上开商店的创业计划书
2014/01/19 职场文书
大学生学年自我鉴定
2014/02/10 职场文书
社会实践活动总结报告
2014/04/29 职场文书
人事局接收函
2015/01/31 职场文书
医院中层管理人员培训心得体会
2016/01/11 职场文书
2016年优秀少先队员事迹材料
2016/02/26 职场文书
2019年感恩励志演讲稿(收藏备用)
2019/09/11 职场文书
CSS实现两列布局的N种方法
2021/08/02 HTML / CSS
Python Pytorch查询图像的特征从集合或数据库中查找图像
2022/04/09 Python
golang三种设计模式之简单工厂、方法工厂和抽象工厂
2022/04/10 Golang