<i id='EJpto'><tr id='EJpto'><dt id='EJpto'><q id='EJpto'><span id='EJpto'><b id='EJpto'><form id='EJpto'><ins id='EJpto'></ins><ul id='EJpto'></ul><sub id='EJpto'></sub></form><legend id='EJpto'></legend><bdo id='EJpto'><pre id='EJpto'><center id='EJpto'></center></pre></bdo></b><th id='EJpto'></th></span></q></dt></tr></i><div id='EJpto'><tfoot id='EJpto'></tfoot><dl id='EJpto'><fieldset id='EJpto'></fieldset></dl></div>

  1. <tfoot id='EJpto'></tfoot>

      <small id='EJpto'></small><noframes id='EJpto'>

    1. <legend id='EJpto'><style id='EJpto'><dir id='EJpto'><q id='EJpto'></q></dir></style></legend>
        <bdo id='EJpto'></bdo><ul id='EJpto'></ul>

      javascript匀速动画和缓冲动画详解

      在Web开发中,动画效果是非常重要的。本文将讲解Javascript中的匀速动画和缓冲动画的实现原理及示例说明。
        <bdo id='exyub'></bdo><ul id='exyub'></ul>

          <i id='exyub'><tr id='exyub'><dt id='exyub'><q id='exyub'><span id='exyub'><b id='exyub'><form id='exyub'><ins id='exyub'></ins><ul id='exyub'></ul><sub id='exyub'></sub></form><legend id='exyub'></legend><bdo id='exyub'><pre id='exyub'><center id='exyub'></center></pre></bdo></b><th id='exyub'></th></span></q></dt></tr></i><div id='exyub'><tfoot id='exyub'></tfoot><dl id='exyub'><fieldset id='exyub'></fieldset></dl></div>

            <small id='exyub'></small><noframes id='exyub'>

              <tbody id='exyub'></tbody>
            <legend id='exyub'><style id='exyub'><dir id='exyub'><q id='exyub'></q></dir></style></legend>

            1. <tfoot id='exyub'></tfoot>

                Javascript匀速动画和缓冲动画详解

                在Web开发中,动画效果是非常重要的。本文将讲解Javascript中的匀速动画和缓冲动画的实现原理及示例说明。

                匀速动画

                在匀速动画中,物体的速度保持不变,让物体的移动更加平滑。

                实现

                匀速动画的实现过程分为三个步骤:

                1. 计算物体的初始位置和目标位置;
                2. 根据物体的初始位置和目标位置计算物体需要移动的距离;
                3. 不断改变物体的位置,直到物体到达目标位置为止。

                代码实现如下:

                function move(element, target, duration){
                  var start = parseFloat(getComputedStyle(element).left);
                  var distance = target - start;
                  var speed = distance / duration;
                  var interval = 10;
                
                  var timer = setInterval(function(){
                    var current = parseFloat(getComputedStyle(element).left);
                    if (Math.abs(current - target) <= Math.abs(speed)) {
                      clearInterval(timer);
                      element.style.left = target + 'px';
                    } else {
                      element.style.left = current + speed + 'px';
                    }
                  }, interval);
                }
                

                示例说明

                下面是一个匀速动画的示例,点击开始按钮后,红色的盒子会匀速从左边移动到右边。

                <!DOCTYPE html>
                <html lang="en">
                <head>
                  <meta charset="UTF-8">
                  <title>匀速动画示例</title>
                  <style>
                    #box {
                      position: absolute;
                      left: 0;
                      top: 100px;
                      width: 50px;
                      height: 50px;
                      background: red;
                    }
                  </style>
                </head>
                <body>
                  <div id="box"></div>
                
                  <button onclick="move(document.getElementById('box'), 500, 3000)">开始</button>
                
                  <script>
                    function move(element, target, duration){
                      var start = parseFloat(getComputedStyle(element).left);
                      var distance = target - start;
                      var speed = distance / duration;
                      var interval = 10;
                
                      var timer = setInterval(function(){
                        var current = parseFloat(getComputedStyle(element).left);
                        if (Math.abs(current - target) <= Math.abs(speed)) {
                          clearInterval(timer);
                          element.style.left = target + 'px';
                        } else {
                          element.style.left = current + speed + 'px';
                        }
                      }, interval);
                    }
                  </script>
                </body>
                </html>
                

                缓冲动画

                在缓冲动画中,物体的移动速度是动态变化的,刚开始移动速度较快,但是随着移动的距离越来越小,移动的速度越来越慢,让物体的移动更加自然。

                实现

                缓冲动画的实现过程:

                1. 计算物体的初始位置和目标位置;
                2. 根据物体的初始位置和目标位置计算物体需要移动的距离;
                3. 计算一个速度变化的因子,不断改变物体的位置。

                代码实现如下:

                function move(element, target, duration){
                  var start = parseFloat(getComputedStyle(element).left);
                  var distance = target - start;
                  var interval = 10;
                  var speed = distance / duration;
                  var factor = 0.3;
                  var timer = setInterval(function(){
                    var current = parseFloat(getComputedStyle(element).left);
                    var remain = target - current;
                    var delta = remain * factor;
                    if (Math.abs(delta) < 1) {
                      clearInterval(timer);
                      element.style.left = target + 'px';
                    } else {
                      element.style.left = current + delta + 'px';
                    }
                  }, interval);
                }
                

                示例说明

                下面是一个缓冲动画的示例,点击开始按钮后,红色的盒子会从左边缓慢移动到右边。

                <!DOCTYPE html>
                <html lang="en">
                <head>
                  <meta charset="UTF-8">
                  <title>缓冲动画示例</title>
                  <style>
                    #box {
                      position: absolute;
                      left: 0;
                      top: 100px;
                      width: 50px;
                      height: 50px;
                      background: red;
                    }
                  </style>
                </head>
                <body>
                  <div id="box"></div>
                
                  <button onclick="move(document.getElementById('box'), 500, 3000)">开始</button>
                
                  <script>
                    function move(element, target, duration){
                      var start = parseFloat(getComputedStyle(element).left);
                      var distance = target - start;
                      var interval = 10;
                      var speed = distance / duration;
                      var factor = 0.3;
                      var timer = setInterval(function(){
                        var current = parseFloat(getComputedStyle(element).left);
                        var remain = target - current;
                        var delta = remain * factor;
                        if (Math.abs(delta) < 1) {
                          clearInterval(timer);
                          element.style.left = target + 'px';
                        } else {
                          element.style.left = current + delta + 'px';
                        }
                      }, interval);
                    }
                  </script>
                </body>
                </html>
                

                以上就是Javascript匀速动画和缓冲动画的详细讲解,希望对大家有所帮助。

                本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

                相关文档推荐

                treetable.js没有checked做联动。于是自己基于treetable开发的一个小功能,希望能和大家一起交流一下。 1. 在当前HTML文档checked监听函数中增加以下代码 //联动 table.on('checkbox(quan_list)', function(obj){ //console.log(obj); //当前id var id = obj.
                当使用Javascript的attachEvent来绑定事件时,我们希望能够给事件处理函数传递一些参数,但是attachEvent本身并不支持传递参数。下面介绍两种解决方法。
                KnockoutJS是一款流行的JavaScript库,针对一个web应用程序的建立提供了比较好的基础架构。其中,表单的数据绑定功能是KnockoutJS最为常用的功能之一。本文将详细讲解KnockoutJS 3.x
                下面是用javascript实现改善用户体验之alert提示效果的完整攻略。
                在学习JavaScript编写贪吃蛇游戏之前,需要掌握以下的前置知识:
                1. <small id='yQm1O'></small><noframes id='yQm1O'>

                  • <tfoot id='yQm1O'></tfoot>
                        <tbody id='yQm1O'></tbody>

                        <legend id='yQm1O'><style id='yQm1O'><dir id='yQm1O'><q id='yQm1O'></q></dir></style></legend>

                          <bdo id='yQm1O'></bdo><ul id='yQm1O'></ul>
                        • <i id='yQm1O'><tr id='yQm1O'><dt id='yQm1O'><q id='yQm1O'><span id='yQm1O'><b id='yQm1O'><form id='yQm1O'><ins id='yQm1O'></ins><ul id='yQm1O'></ul><sub id='yQm1O'></sub></form><legend id='yQm1O'></legend><bdo id='yQm1O'><pre id='yQm1O'><center id='yQm1O'></center></pre></bdo></b><th id='yQm1O'></th></span></q></dt></tr></i><div id='yQm1O'><tfoot id='yQm1O'></tfoot><dl id='yQm1O'><fieldset id='yQm1O'></fieldset></dl></div>