• 技术文章 >web前端 >js教程

    在vue项目中通过tween方法如何实现返回顶部

    亚连亚连2018-06-02 10:07:08原创1742
    这篇文章主要介绍了vue项目tween方法实现返回顶部,现在分享给大家,也给大家做个参考。

    一、场景

    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>
        <p id="app">
          <p @click="backTop()" class="backTop">Top</p>
        </p>
        
        <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)
              }
            })
          }
        }

    上面是我整理给大家的,希望今后会对大家有帮助。

    相关文章:

    关于vue打包后字体和图片资源失效(详细教程)

    React中使用BootStrap用户体验框架(详细教程)

    通过网页爬虫中cookie自动获取及过期自动更新(详细教程)

    以上就是在vue项目中通过tween方法如何实现返回顶部的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:tween 如何 方法
    上一篇:怎样在vue-cli搭建项目内增加后台mock接口 下一篇:怎样使用vue做移动端微信公众号
    Web大前端开发直播班

    相关文章推荐

    • Angular项目中怎么使用 SASS 样式• Vercel是什么?怎么部署Node服务?• 一文聊聊Angular中的生命周期• Angular项目如何上线?结合nginx来聊聊上线流程!• 什么是流(Stream)?如何理解Nodejs中的流
    1/1

    PHP中文网