【问题标题】:Stop animation function when another one starts另一个启动时停止动画功能
【发布时间】:2011-03-13 22:29:58
【问题描述】:

有两种不同的功能,一种用于mouseenter,一种用于mouseleave

第一个显示块,第二个隐藏它(都带有动画)。

问题是,mouseleave 可以在 mouseenter 内部的动画完成之前启动。

在这种情况下,方块会闪烁几次。

我想在mouseleave 启动时停止mouseenter 函数内的任何动画。

如何做到这一点?

【问题讨论】:

    标签: javascript jquery html css animation


    【解决方案1】:

    在每个动画函数前面放置一个.stop()。例如:

    $(this).stop().slideDown();
    $(this).stop().slideUp();
    

    如果 $(this) 当前没有动画,.stop() 将什么也不做。


    注意:.stop() 一起使用时,您可能会遇到标准滑动和淡入淡出功能的问题 - 这些功能会记住元素完全动画到的最后高度/不透明度。因此,如果在调用 .stop().slideUp() 之前元素仅达到 50% 的高度,则下一个 .slideDown() 将使其动画仅达到 50% 的高度。在再次进入之前快速移入移出鼠标,查看 here 发生的情况。

    jQuery 文档建议使用.stop(true, true),它会导致半完成的动画跳转到它们的最终位置。这当然会造成难看的“闪光”。

    我建议完全避免使用 .slideUp().fadeIn() 并设置特定的高度/不透明度以进行动画处理,例如:

    $(this).stop().animate({height: 100});
    $(this).stop().animate({height: 0});
    

    查看此演示:http://jsfiddle.net/Stwnv/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多