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 相关文章推荐
javascript+html5实现仿flash滚动播放图片的方法
Apr 27 Javascript
JavaScript中计算网页中某个元素的位置
Jun 10 Javascript
JS排序方法(sort,bubble,select,insert)代码汇总
Jan 30 Javascript
JS中微信小程序自定义底部弹出框
Dec 22 Javascript
js中开关变量使用实例
Feb 24 Javascript
基于对象合并功能的实现示例
Oct 10 Javascript
详解JS数值Number类型
Feb 07 Javascript
vue如何将v-for中的表格导出来
May 07 Javascript
JavaScript继承与多继承实例分析
May 26 Javascript
node和vue实现商城用户地址模块
Dec 05 Javascript
JS函数节流和防抖之间的区分和实现详解
Jan 11 Javascript
Element InputNumber 计数器的实现示例
Aug 03 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
咖啡是不是喝了会上瘾?咖啡是必须品吗!
2021/03/04 新手入门
最省空间的计数器
2006/10/09 PHP
对squid中refresh_pattern的一些理解和建议
2009/04/17 PHP
IIS 7.5 asp Session超时时间设置方法
2017/04/17 PHP
PHP简单实现合并2个数字键数组值的方法
2017/05/30 PHP
PHP中的自动加载操作实现方法详解
2019/08/06 PHP
jquery maxlength使用说明
2011/09/09 Javascript
jQuery中$.fn的用法示例介绍
2013/11/05 Javascript
一个JavaScript操作元素定位元素的实例
2014/10/29 Javascript
angularjs基础教程
2014/12/25 Javascript
3个可以改善用户体验的AngularJS指令介绍
2015/06/18 Javascript
jquery实现未经美化的简洁TAB菜单效果
2015/08/28 Javascript
详解JavaScript中|单竖杠运算符的使用方法
2016/05/23 Javascript
漫谈JS引擎的运行机制 你应该知道什么
2016/06/15 Javascript
浅谈js中的in-for循环
2016/06/28 Javascript
jQuery获取file控件中图片的宽高与大小
2016/08/04 Javascript
AngularJS教程之简单应用程序示例
2016/08/16 Javascript
Javascript生成带参数的二维码示例
2016/10/10 Javascript
jquery移除了live()、die(),新版事件绑定on()、off()的方法
2016/10/26 Javascript
基于JavaScript实现带缩略图的轮播效果
2017/01/12 Javascript
dropload.js插件下拉刷新和上拉加载使用详解
2017/10/20 Javascript
JavaScript实现浅拷贝与深拷贝的方法分析
2018/07/05 Javascript
AngularJS自定义表单验证功能实例详解
2018/08/24 Javascript
浅谈bootstrap layer.open中end的使用方法
2019/09/12 Javascript
微信小程序激励式视频广告组件使用详解
2019/12/06 Javascript
python使用wxpython开发简单记事本的方法
2015/05/20 Python
python编程培训 python培训靠谱吗
2018/01/17 Python
Python程序包的构建和发布过程示例详解
2019/06/09 Python
python 解决cv2绘制中文乱码问题
2019/12/23 Python
司法局火灾防控方案
2014/06/05 职场文书
企业法人代表任命书
2014/06/06 职场文书
医德医风个人工作总结2014
2014/11/14 职场文书
饭店服务员岗位职责
2015/02/09 职场文书
2015小学毕业班工作总结
2015/07/21 职场文书
无线电通信名词解释
2022/02/18 无线电
不想升级Win11?教你彻底锁定老版Windows系统的方法(附下载地址)
2022/09/23 数码科技