当另一个动画正在进行时,Jquery 动画

发布于 2024-09-15 22:06:02 字数 648 浏览 5 评论 0原文

我正在使用这里给出的简单缓动动画 JQUERY缓动插件
将 div 从 left:200 调整到 left:0 并返回。(上页的最后一个示例)

我在容器 div 中有多个 div。我想要做的是按以下方式对 4 个 div 进行动画处理:

1] 假设如果我有两个 div,div1 和 div2。 当 div1 处于动画状态并且动画正在进行时,div2 动画应该开始。例如:当 div1 从 left=200 移动到 left=0 时,div2 动画应该在 div1 位于 left = 时开始100.

编辑 (注意:div的数量是可变的)

.......

当前动画正在进行时,并到达下一个动画应该开始的点(所有div的动画效果相同)。

2] 在迭代 div 集合和动画时,将下一个动画延迟给定的时间间隔。

有什么方法可以知道动画的开始吗?或者动画正在进行中?

谢谢大家

I'm using a simple easing animation given here using JQUERY EASING PLUGIN
i.e.easing a div from left:200 to left:0 and back.(last example on above page)

I have multiple divs in a container div.and what i want to do is animate the 4 divs in following way :

1] Suppose if i have two divs, div1 and div2.
when div1 is animated,and the animation is in progress the div2 animation should start.eg: when div1 is moving from left=200 to left=0 , the div2 animation should start when div1 is at left = 100.

Edit
(Note:the number of divs are variable)

.......

When the current animation is in progress,and reaches a point the next animation should start (effect of animation is same of all divs).

2] While iterating a div collection and animating, delay the next animation for a given interval of time.

Is there any way to know start of animation? or animation is in progress?

Thanks all

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

迎风吟唱 2024-09-22 22:06:02

您可以使用 ':animated' 伪选择器来查明元素当前是否处于运动状态:

if ($('#div1').is(':animated')) {
    // do something
}

http: //api.jquery.com/animated-selector/

您还可以尝试使用 step 选项来检查 div2 何时开始动画:

$('#div1').animate({
    left:0
},{
    step: function() {
        // check distance and animate div2 when it reaches 100
    }
});

http://api.jquery.com/animate/

You can use the ':animated' pseudo-selector to find out if an element is currently in motion:

if ($('#div1').is(':animated')) {
    // do something
}

http://api.jquery.com/animated-selector/

You can also try the step option to check when div2 should start animate:

$('#div1').animate({
    left:0
},{
    step: function() {
        // check distance and animate div2 when it reaches 100
    }
});

http://api.jquery.com/animate/

冷心人i 2024-09-22 22:06:02

您正在寻找的答案位于“step”参数中。

您可以定义一个步骤参数,该参数在整个动画范围内一致调用。在每个步骤中,您都可以检查动画的进度,如果达到阈值,则可以触发第二个动画。

例如:

$item1 = $("#myItem1");
$item2 = $("#myItem2");

$item1.animate({width: 500}, {
  duration: 1000,
  step: function(now, fx) {
    if (fx.state > 0.5 && fx.prop === "width") {
       if(!$item2.is(':animated')) // Make sure you didn't start the animation already
         $item2.animate({width: 500}, 1000);
    }
  }
})

这个想法适用于任意数量的 div,尽管显然您必须接受这个概念并修改它以适合您的情况。如果这有帮助,请告诉我!

在此处阅读有关步骤函数的更多信息:http://api.jquery.com/animate/

The answer you are looking for lies in the "step" parameter.

You can define a step parameter which is called on a consistent basis across the span of the entire animation. At each step, you can check the progress of the animation and if it has hit the threshold you can trigger the second animation.

For instance:

$item1 = $("#myItem1");
$item2 = $("#myItem2");

$item1.animate({width: 500}, {
  duration: 1000,
  step: function(now, fx) {
    if (fx.state > 0.5 && fx.prop === "width") {
       if(!$item2.is(':animated')) // Make sure you didn't start the animation already
         $item2.animate({width: 500}, 1000);
    }
  }
})

This idea will work for any number of divs, although obviously you will have to take the concept and modify it to work with your case. Please let me know if this helps!

Read more about the step function here: http://api.jquery.com/animate/

梦里梦着梦中梦 2024-09-22 22:06:02

您可以使用一个函数在一个地方管理动画。

setTimeout(doAnimate($div1),100);setTimeout(doAnimate($div2),200); 

ETC。

You can use a function to manage the animation in one place.

setTimeout(doAnimate($div1),100);setTimeout(doAnimate($div2),200); 

etc.

笑脸一如从前 2024-09-22 22:06:02

您可以向 animate 函数添加回调:

$('#div1').animate(
 { left: 0 },
 { duration: 'slow', easing: 'easeOutBack' },
 function(){
    //Do what you want in here, it will be executed once the animation above is completed.
)};

You can add a callback to the animate function :

$('#div1').animate(
 { left: 0 },
 { duration: 'slow', easing: 'easeOutBack' },
 function(){
    //Do what you want in here, it will be executed once the animation above is completed.
)};
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文