<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实现匀速与减速缓慢运动的动画效果封装示例

      下面我将详细讲解如何实现 JS 实现匀速与减速缓慢运动的动画效果封装。
      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)
                }
                

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

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

                相关文档推荐

                layui实现图片上传成功后回显点击放大图片功能,html代码部分: !-- html代码--div class="layui-form-item" label class="layui-form-label"上传图片/label div class="layui-input-block" button type="button" class="layui-btn" id="license-auth-letter-
                Layui实现数据表格中鼠标悬停图片放大离开时恢复原图的效果,最终效果如下图所示: 实现代码如下,在done函数中调用hoverOpenImg方法 var tableIns = window.demoTable = table .render({ elem : '#idTest', id : 'idTest', url : '/postData', //width : 150
                我们在用到layui时候,需要点击文本输入框调起弹出选择框并选择内容,这个要怎么操作呢?以下两种方法可以参考: 1、点击名称,弹出信息弹框,选择表格中的某一行,实现效果如下: html页面代码 !--计量器具弹出层-- div id="equipment" lay-filter="equipmen
                https的网站如果引用百度地图,会出现加载不了的问题,这是因为涉及到跨域问题,网站是https的,但是引用百度地图的是http的,这个要怎么操作呢? 比如我引用的地址:http://api.map.baidu.com/api?v=2.0ak=AK显示 后来看了一下,少了一个s=1字段,加一下s=1
                做小程序项目的时候,客户提了一个功能需求优化,就是长按文字需要复制全部内容,因为有的手机支持全选复制,有的手机不支持全选复制。 通过设置系统剪贴板的内容和获取系统剪贴板的内容实现复制功能 html相关代码: van-field value="{{form.contactPhone}}"
                由于项目功能需要,要实现对table中的行实现拖拽排序功能,找来找去发现Sortable.js能很好的满足这个需求,而且它还是开源的,于是乎就开始学习使用Sortable.js 特点 轻量级但功能强大 移动列表项时有动画 支持触屏设备和大多数浏览器(IE9及以下除外) 支持
              • <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>

                        <tbody id='HIw0J'></tbody>

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