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

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

      2. <legend id='VrzPw'><style id='VrzPw'><dir id='VrzPw'><q id='VrzPw'></q></dir></style></legend>

        JS实现水平移动与垂直移动动画

        时间:2023-12-09
        • <i id='S00SC'><tr id='S00SC'><dt id='S00SC'><q id='S00SC'><span id='S00SC'><b id='S00SC'><form id='S00SC'><ins id='S00SC'></ins><ul id='S00SC'></ul><sub id='S00SC'></sub></form><legend id='S00SC'></legend><bdo id='S00SC'><pre id='S00SC'><center id='S00SC'></center></pre></bdo></b><th id='S00SC'></th></span></q></dt></tr></i><div id='S00SC'><tfoot id='S00SC'></tfoot><dl id='S00SC'><fieldset id='S00SC'></fieldset></dl></div>

                  <bdo id='S00SC'></bdo><ul id='S00SC'></ul>
                • <small id='S00SC'></small><noframes id='S00SC'>

                    <tbody id='S00SC'></tbody>

                • <tfoot id='S00SC'></tfoot>
                • <legend id='S00SC'><style id='S00SC'><dir id='S00SC'><q id='S00SC'></q></dir></style></legend>

                  JS实现水平移动与垂直移动动画的攻略步骤如下:

                  步骤一:获取需操作的元素

                  首先,我们需要获取需要操作的元素,可以通过以下方式获取:

                  const elem = document.querySelector('#target');
                  

                  其中,#target是需要操作的元素的id。

                  步骤二:水平移动动画

                  接下来,我们开始实现水平移动动画,具体步骤如下:

                  1. 定义初始位置

                  在实现动画之前,我们需要先定义元素的初始位置,可以通过CSS样式来实现:

                  #target {
                    position: relative;
                    left: 0;
                  }
                  

                  上述CSS样式将元素的初始位置设置为页面左侧。

                  2. 设置动画参数

                  接下来,我们需要设置动画的参数,包括动画时长、动画距离等。

                  const duration = 1000; // 动画时长
                  const distance = 200;  // 动画距离
                  

                  上述代码将动画时长设置为1000ms,并将动画距离设置为200。

                  3. 实现动画

                  接下来,我们可以通过JavaScript实现水平移动动画:

                  let startPos = 0; // 起始位置
                  let startTime = null; // 开始时间
                  
                  function step(timestamp) {
                    if (!startTime) startTime = timestamp;
                    const elapsedTime = timestamp - startTime;
                    const progress = Math.min(elapsedTime / duration, 1); // 动画进度
                    const distanceMoved = progress * distance; // 距离移动距离
                  
                    elem.style.left = `${startPos + distanceMoved}px`; // 移动元素
                  
                    if (progress < 1) {
                      window.requestAnimationFrame(step);
                    }
                  }
                  
                  window.requestAnimationFrame(step);
                  

                  代码解析:

                  • startPos表示元素的起始位置,初始值为0。
                  • startTime表示动画开始时间,初始值为null。
                  • step函数是实现动画的核心代码,使用了window.requestAnimationFrame()函数实现动画的流畅度。
                  • step函数中,首先判断startTime是否为null,如果是,则将其设置为当前时间戳。
                  • 然后,计算动画时间经过的时间(即elapsedTime)和动画进度(即progress, 含义是当前的进度比率,即1表示动画结束),以及元素已经移动的距离(即distanceMoved)。
                  • 最后,将元素移动到新的位置(startPos + distanceMoved)上,并判断动画是否已经结束,如果没有,则再次调用window.requestAnimationFrame(),直到动画结束。

                  4. 完整示例

                  以下是完整的实现水平移动动画的示例代码:

                  <div id="target">Hello World!</div>
                  
                  <style>
                  #target {
                    position: relative;
                    left: 0;
                  }
                  </style>
                  
                  <script>
                  const elem = document.querySelector('#target');
                  const duration = 1000; // 动画时长
                  const distance = 200;  // 动画距离
                  
                  let startPos = 0; // 起始位置
                  let startTime = null; // 开始时间
                  
                  function step(timestamp) {
                    if (!startTime) startTime = timestamp; 
                    const elapsedTime = timestamp - startTime; // 时间差
                    const progress = Math.min(elapsedTime / duration, 1); // 进度比率,最大值为1
                    const distanceMoved = progress * distance; // 已经移动的距离
                    elem.style.left = `${startPos + distanceMoved}px`; // 移动元素
                    if (progress < 1) {
                      window.requestAnimationFrame(step);
                    }
                  }
                  
                  window.requestAnimationFrame(step);
                  </script>
                  

                  步骤三:垂直移动动画

                  步骤三的要点与步骤二类似:

                  1. 定义初始位置

                  #target {
                    position: relative;
                    top: 0;
                  }
                  

                  上述CSS样式将元素的初始位置设置为页面顶端。

                  2. 设置动画参数

                  const duration = 1000; ///< 动画时长
                  const distance = 200; ///< 动画距离
                  

                  上述代码将动画时长设置为1000ms,并将动画距离设置为200。

                  3. 实现动画

                  let startPos = 0; // 起始位置
                  let startTime = null; // 开始时间
                  
                  function step(timestamp) {
                    if (!startTime) startTime = timestamp;
                    const elapsedTime = timestamp - startTime;
                    const progress = Math.min(elapsedTime / duration, 1); // 动画进度
                    const distanceMoved = progress * distance; ///< 距离移动距离
                  
                    elem.style.top = `${startPos + distanceMoved}px`; // 移动元素
                  
                    if (progress < 1) {
                      window.requestAnimationFrame(step);
                    }
                  }
                  
                  window.requestAnimationFrame(step);
                  

                  代码解析与步骤二的类似,区别在于应用top属性移动元素。

                  4. 完整示例

                  以下是完整的实现垂直移动动画的示例代码:

                  <div id="target">Hello World!</div>
                  
                  <style>
                  #target {
                    position: relative;
                    top: 0;
                  }
                  </style>
                  
                  <script>
                  const elem = document.querySelector('#target');
                  const duration = 1000; ///< 动画时长
                  const distance = 200; ///< 动画距离
                  
                  let startPos = 0; // 起始位置
                  let startTime = null; // 开始时间
                  
                  function step(timestamp) {
                    if (!startTime) startTime = timestamp;
                    const elapsedTime = timestamp - startTime;
                    const progress = Math.min(elapsedTime / duration, 1); // 动画进度
                    const distanceMoved = progress * distance; // 距离移动距离
                    elem.style.top = `${startPos + distanceMoved}px`; // 移动元素
                    if (progress < 1) {
                      window.requestAnimationFrame(step);
                    }
                  }
                  
                  window.requestAnimationFrame(step);
                  </script>
                  

                  以上便是JS实现水平移动与垂直移动动画的完整攻略,希望对你有帮助。

                  上一篇:js通过循环多张图片实现动画效果 下一篇:Java两个变量的互换(不借助第3个变量)具体实现方法

                  相关文章

                    • <bdo id='eqCAQ'></bdo><ul id='eqCAQ'></ul>
                  1. <tfoot id='eqCAQ'></tfoot>
                  2. <legend id='eqCAQ'><style id='eqCAQ'><dir id='eqCAQ'><q id='eqCAQ'></q></dir></style></legend>

                  3. <small id='eqCAQ'></small><noframes id='eqCAQ'>

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