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 相关文章推荐
Packer 3.0 JS压缩及混淆工具 下载
May 03 Javascript
Div Select挡住的解决办法
Aug 07 Javascript
jquery 漂亮的删除确认和提交无刷新删除示例
Nov 13 Javascript
常见的jQuery选择器汇总
Nov 24 Javascript
谈谈我对JavaScript原型和闭包系列理解(随手笔记9)
Dec 24 Javascript
Jquery获取第一个子元素简单实例
Jun 02 Javascript
Vue.js实现可配置的登录表单代码详解
Mar 29 Javascript
layui结合form,table的全选、反选v1.0示例讲解
Aug 15 Javascript
vue+echarts实现动态绘制图表及异步加载数据的方法
Oct 17 Javascript
微信小程序http连接访问解决方案的示例
Nov 05 Javascript
vue路由守卫,限制前端页面访问权限的例子
Nov 11 Javascript
vue 公共列表选择组件,引用Vant-UI的样式方式
Nov 02 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+javascript模拟Matrix画面
2006/10/09 PHP
php实现用手机关闭计算机(电脑)的方法
2015/04/22 PHP
Yii快速入门经典教程
2015/12/28 PHP
Yii中表单用法实例详解
2016/01/05 PHP
PHP更安全的密码加密机制Bcrypt详解
2017/06/18 PHP
php app支付宝回调(异步通知)详解
2018/07/25 PHP
几个比较经典常用的jQuery小技巧
2010/03/01 Javascript
JS 实现Table相同行的单元格自动合并示例代码
2013/08/27 Javascript
JavaScript创建对象的写法
2013/08/29 Javascript
用javascript判断IE版本号简单实用且向后兼容
2013/09/11 Javascript
javascript写的一个模拟阅读小说的程序
2014/04/04 Javascript
js父页面与子页面不同时显示的方法
2014/10/16 Javascript
Bootstrap精简教程
2015/11/27 Javascript
jQuery插件pagination实现无刷新分页
2016/05/21 Javascript
再次谈论Javascript中的this
2016/06/23 Javascript
使用contextMenu插件实现Bootstrap table弹出右键菜单
2017/02/20 Javascript
微信小程序下拉框组件使用方法详解
2018/12/28 Javascript
用node.js写一个jenkins发版脚本
2019/05/21 Javascript
node.js Promise对象的使用方法实例分析
2019/12/26 Javascript
[02:59]DOTA2完美大师赛主赛事第三日精彩集锦
2017/11/25 DOTA
python实现倒计时的示例
2014/02/14 Python
Python 网络爬虫--关于简单的模拟登录实例讲解
2018/06/01 Python
Python for循环生成列表的实例
2018/06/15 Python
django+xadmin+djcelery实现后台管理定时任务
2018/08/14 Python
python 输出所有大小写字母的方法
2019/01/02 Python
python使用原始套接字发送二层包(链路层帧)的方法
2019/07/22 Python
关于Python形参打包与解包小技巧分享
2019/08/24 Python
python-web根据元素属性进行定位的方法
2019/12/13 Python
如何通过安装HomeBrew来安装Python3
2020/12/23 Python
在canvas上实现元素图片镜像翻转动画效果的方法
2018/03/20 HTML / CSS
软件测试笔试题
2012/10/25 面试题
捐书寄语赠言
2014/01/18 职场文书
物业经理自我鉴定
2014/03/03 职场文书
幼儿园运动会口号
2014/06/07 职场文书
五一活动标语
2014/06/30 职场文书
2015年护士节活动总结
2015/02/10 职场文书