<tfoot id='MMY27'></tfoot>

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

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

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

        JS div匀速移动动画与变速移动动画代码实例

        关于JS div匀速移动动画与变速移动动画代码实例,我为你提供以下攻略。

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

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

        • <bdo id='asYEi'></bdo><ul id='asYEi'></ul>
          <tfoot id='asYEi'></tfoot>
            <tbody id='asYEi'></tbody>

                  关于JS div匀速移动动画与变速移动动画代码实例,我为你提供以下攻略。

                  1. 匀速移动动画

                  匀速移动动画的实现方法常见的有两种方式:

                  (1)通过定时器 setInterval() 不断执行移动过程

                  function moveBySetInterval(ele, speed) {
                      clearInterval(ele.timerId);
                      ele.timerId = setInterval(function() {
                          var left = ele.offsetLeft + speed;
                          ele.style.left = left + "px";
                      }, 20);
                  }
                  

                  该函数实现了当传入元素ele和速度speed之后,不断地将元素向右移动。其中,setInterval() 是定时器函数,通过将 setInterval() 返回的ID存储在元素上,可以方便后续调用 clearInterval() 来停止定时器,比如在动画结束时调用 clearInterval()。

                  (2)通过递归调用自身实现

                  function moveByTimeout(ele, target, step) {
                      var left = ele.offsetLeft;
                      if (left == target) {
                          return;
                      }
                      if (left < target) {
                          step = Math.abs(step);
                      } else {
                          step = -Math.abs(step);
                      }
                      ele.style.left = left + step + "px";
                      setTimeout(function() {
                          moveByTimeout(ele, target, step);
                      }, 20);
                  }
                  

                  该函数实现了通过计算元素的当前位置和目标位置之间的差值,来确定元素的移动方向和移动距离。通过不断递归调用自身,并在每次回调中改变元素的位置,来实现元素的移动。setTimeout() 是定时器函数,通过将 setTimeout() 返回的ID存储在函数内部的变量中,可以方便后续调用 clearTimeout() 来停止定时器,比如在动画结束时调用 clearTimeout()。

                  2. 变速移动动画

                  变速移动动画通常是通过缓动函数来实现的,缓动函数可以按照预设的规则调整元素在动画过程中的移动速度,以达到更加自然、顺畅的效果。其中,常见的缓动函数有:线性、加速、减速、弹性等等。

                  以实现简单的弹性动画为例:

                  function elasticEaseInOut(pos) {
                      if (pos == 0 || pos == 1) {
                          return pos;
                      }
                      var c = 0.3, // 抖动幅度
                          t = 1 - pos,
                          b = 1 - Math.pow(c, 10 * t),
                          d = 1;
                      return 1 - b;
                  }
                  
                  function moveByElastic(ele, target, duration) {
                      var left = ele.offsetLeft,
                          distance = target - left,
                          speed = 0,
                          start = Date.now();
                      (function step() {
                          var timePassed = Date.now() - start,
                              progress = Math.min(timePassed / duration, 1),
                              pos = elasticEaseInOut(progress);
                          if (pos == 1) {
                              clearInterval(ele.timerId);
                          } else {
                              speed = pos * distance - ele.offsetLeft;
                              ele.style.left = ele.offsetLeft + speed + "px";
                              setTimeout(step, 20);
                          }
                      })();
                  }
                  

                  该函数实现了一个简单的弹性缓动函数(elasticEaseInOut),该弹性函数用于计算元素在动画过程中的速度系数。在 moveByElastic() 函数中,通过计算元素当前位置和目标位置之间的距离和时间差,来确定移动速度,并通过不断调用 setTimeout() 来实现元素的移动。其中,speed 属性是根据弹性函数(elasticEaseInOut)计算得出的移动速度,进而用于改变元素位置。通过使用弹性函数,在元素移动的时候,在不同的位置上增加抖动幅度,让移动看起来更加自然。

                  以上是JS div匀速移动动画与变速移动动画代码实例的攻略,希望对你有所帮助。

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

                  相关文档推荐

                  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及以下除外) 支持

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