用requestAnimationFrame动画div

阿达什·康恰迪

我正在尝试先div水平然后再垂直设置动画但是使用的问题requestAnimationFrame是它同时执行两个动画,使div行程成对角线。

这是小提琴链接:https : //jsfiddle.net/akonchady/z4qmkuyc/22/

我究竟做错了什么?

注意:如果我为第二次调用指定了超时,则它可以按预期工作:

animate('abc', 'marginLeft', 250, 1000);
setTimeout(function() {
  animate('abc', 'marginTop', 250, 1000);
}, 3000);

但是我想避免超时。我怎样才能做到这一点requestAnimationFrame

人造丝

functionsJavaScript中的大多数代码都是同步的(将顺序执行)。但是对于asynchronous函数(不会等待较早的函数完成),请使用callbacks来控制执行流程。

function在第一个动画完成后调用send ,请使用callback

function animate(id, styleAttr, finalValue, duration, callback) {
  var ele = document.getElementById('abc'),
    startTime = +new Date, //Not sure how readable this is ?
    delta = null,
    req = null;

  (function timeout() {
    elapsedTime = +new Date - startTime;
    if (elapsedTime >= duration) {
      cancelAnimationFrame(req);
      ele.style[styleAttr] = finalValue + 'px';
      if (typeof callback !== 'undefined') {
        callback();
      }
      return;
    } else {
      delta = finalValue / duration;
      ele.style[styleAttr] = delta * elapsedTime + 'px';
    }
    req = requestAnimationFrame(timeout);
  })();
}
animate('abc', 'marginLeft', 250, 1000, function() {
  animate('abc', 'marginTop', 250, 1000);
});
#abc {
  width: 100px;
  height: 100px;
  background-color: red;
}
<div id='abc'>
</div>

小提琴演示

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

用动画替换div

来自分类Dev

用动画关闭 div

来自分类Dev

用动画交换div位置

来自分类Dev

用键盘移动div(requestAnimationFrame不起作用)

来自分类Dev

用圆形颜色动画填充div

来自分类Dev

用jQuery将div动画化

来自分类Dev

用圆形颜色动画填充div

来自分类Dev

用纯CSS动画一个div动画

来自分类Dev

使用requestAnimationFrame动画HTML视频

来自分类Dev

调用requestAnimationFrame会使动画运行得更快

来自分类Dev

无尽的动画,requestAnimationFrame和调用堆栈限制

来自分类Dev

使用鼠标坐标制作动画时的requestAnimationFrame

来自分类Dev

requestAnimationFrame和setInterval以不同的速度动画

来自分类Dev

减少/减少requestAnimationFrame用于Canvas动画

来自分类Dev

用左侧幻灯片动画替换div

来自分类Dev

Angular Js用动画一一隐藏Div

来自分类Dev

用左侧幻灯片动画替换div

来自分类Dev

Angular Js用动画一一隐藏Div

来自分类Dev

requestAnimationFrame 仅在需要时运行动画比一直使用 requestAnimationFrame 快得多

来自分类Dev

在JavaScript中使用requestAnimationFrame时没有动画

来自分类Dev

requestAnimationFrame动画的运行速度越来越慢

来自分类Dev

将requestAnimationFrame用于非动画目的有什么好处?

来自分类Dev

Javascript:带有 requestAnimationFrame 的没有动画的代码?

来自分类Dev

用jQuery动画效果

来自分类Dev

用动画填充颜色

来自分类Dev

用动画设置位置

来自分类Dev

用scrollTop制作动画

来自分类Dev

用动画改变帧

来自分类Dev

用Timer重复动画