javascript - 当另一个开始时停止动画功能

标签 javascript jquery html css animation

有两种不同的函数,一种用于mouseenter,另一种用于mouseleave

第一个显示 block ,第二个隐藏 block (均带有动画)。

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

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

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

如何做到这一点?

最佳答案

在每个动画函数前放置一个.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/ .

关于javascript - 当另一个开始时停止动画功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5292909/

相关文章:

javascript - 将图像随机放置在 <div> 中并确保均匀分布

javascript - 使用 jQuery 拆分包含 TextNode 和元素的元素

javascript - jquery 窗口加载的简单模式帮助

javascript - CTRL 键检查 javascript 中的右 ALT

javascript - 如何在 Javascript 中模拟 "CTRL +S"按键

html - 在 Bootstrap 3 中禁用响应式网格的问题

javascript - React Higher Order Component - 从包装器组件调用包装组件中的函数

javascript - jQuery:slimScrollbar 隐藏元素

jquery - 防止 AngularJs 使用 jQuery 库

html - 如何在悬停时更改图像时添加过渡效果