<bdo id='j3r29'></bdo><ul id='j3r29'></ul>

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

  1. <small id='j3r29'></small><noframes id='j3r29'>

      <tfoot id='j3r29'></tfoot>

    1. <legend id='j3r29'><style id='j3r29'><dir id='j3r29'><q id='j3r29'></q></dir></style></legend>
    2. JS实现匀速与减速缓慢运动的动画效果封装示例

      时间:2023-12-08
      1. <legend id='XvGx4'><style id='XvGx4'><dir id='XvGx4'><q id='XvGx4'></q></dir></style></legend>

              <tbody id='XvGx4'></tbody>

          • <tfoot id='XvGx4'></tfoot>

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

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

                <bdo id='XvGx4'></bdo><ul id='XvGx4'></ul>

                下面我将详细讲解如何实现 JS 实现匀速与减速缓慢运动的动画效果封装。

                1. 匀速缓动动画

                步骤如下:

                1. 获取元素的起始位置和目标位置
                2. 计算元素移动的距离和移动的总时间
                3. 每个时间间隔移动元素的距离
                4. 将元素移动到目标位置

                示例代码:

                /**
                 * @param {HTMLElement} el
                 * @param {number} target
                 * @param {number} duration
                 */
                function animate(el, target, duration) {
                  var start = parseInt(getComputedStyle(el).left)
                  var distance = target - start
                  var interval = 15 // 时间间隔
                  var speed = distance / (duration / interval) // 每个时间间隔移动的距离
                  var timer = null
                
                  timer = setInterval(function () {
                    var left = parseInt(getComputedStyle(el).left) + speed
                    if ((speed > 0 && left > target) || (speed < 0 && left < target)) {
                      left = target
                    }
                    el.style.left = left + 'px'
                    if (left === target) {
                      clearInterval(timer)
                    }
                  }, interval)
                }
                

                2. 减速缓动动画

                步骤如下:

                1. 获取元素的起始位置和目标位置
                2. 计算元素移动的距离和移动的总时间
                3. 每个时间间隔移动元素的距离
                4. 计算速度,速度递减
                5. 将元素移动到目标位置

                示例代码:

                /**
                 * @param {HTMLElement} el
                 * @param {number} target
                 * @param {number} duration
                 */
                function animate(el, target, duration) {
                  var start = parseInt(getComputedStyle(el).left)
                  var distance = target - start
                  var interval = 15 // 时间间隔
                  var timer = null
                  var speed = 0 // 初始速度
                  var a = 0.0005 // 减速度
                
                  timer = setInterval(function () {
                    var left = parseInt(getComputedStyle(el).left) + speed
                    if ((speed > 0 && left > target) || (speed < 0 && left < target)) {
                      left = target
                    }
                    el.style.left = left + 'px'
                    // 计算速度,速度递减
                    speed += (target - left) * a
                    if (left === target) {
                      clearInterval(timer)
                    }
                  }, interval)
                }
                

                以上是两个封装示例,可以根据实际需求选用。有关更多动画效果的示例,可查看相关学习资料。

                上一篇:巧用局部变量提升javascript性能 下一篇:JS实现回到页面顶部动画效果的简单实例

                相关文章

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

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

              • <tfoot id='HIw0J'></tfoot>

                      <bdo id='HIw0J'></bdo><ul id='HIw0J'></ul>