如何使用 JQuery.hover 和 Raphael.animate 制作菜单动画?
请参阅此小提琴:
每个列表项都包含一个 SVG元素。
我的目标是当用户将鼠标悬停在列表项上时,会出现 Raphael 动画(针对其子 svg 元素)。
我遇到以下问题:
- 缓慢移动鼠标时,JQuery.hover 工作正常。但是,当你 快速将鼠标移过(或移开)两个列表项(水平),svg 元素通常会卡在“mouseenter”动画位置。
我试图找出如何让动画按预期工作:当快速将鼠标悬停在两个列表项上时,最终结果是 svg 元素位于“mouseleave”位置。
上面的小提琴演示了这个问题(在 FireFox 5 和 Chrome 13 中)。
See this fiddle:
Each list item contains an SVG element.
My goal is when the user hovers the list items, the Raphael animation occurs (for its child svg element).
I'm having the following issue:
- JQuery.hover works fine when moving the mouse slowly. But, when you
quickly mouse across (and off) both list items (horizontally), the svg elements often get stuck in the "mouseenter" animate position.
I'm trying to figure out how to get the animation to work as expected: When quickly mousing across both list items, the end result is that the svg elements are in the "mouseleave" position.
The above fiddle demonstrates the issue (in FireFox 5 and Chrome 13).
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我建议使用 Raphael 的原生 mouseover 和 mouseout
他们对这些事件迅速做出反应
您还可以使用关键字“this”紧密绑定动画
I would recommend using Raphael's native mouseover and mouseout
They rapidly respond to these events
You will also be able to tightly bind the animation with the keyword "this"
:
请参阅此小提琴以获取解决方案 svg动画在鼠标进入动画位置时冻结,将动画进入和退出时间设置为相同的值:
在上面的代码中,动画时间为400。将两个动画时间设置为相同的值解决了这个问题。
完整代码请参阅上面的小提琴。
请注意,使用 Raphael 悬停函数而不是 JQuery 悬停函数(具有不同的动画时间)仍然会显示相同的问题并具有相同的解决方案。
See this fiddle for the solution:
To prevent the svg animation from freezing in the mouseenter animate postion, set the animate in and out time to be the same value:
In the above code, the animate time is 400. Setting both animate times to the same value solves the issue.
See the above fiddle for the full code.
Note that using the Raphael hover function instead of the JQuery hover function (with different animate times) still shows the same issue and has the same solution.