【发布时间】:2012-03-30 11:24:09
【问题描述】:
我正在尝试同时应用动画,其中之一是 UI 爆炸效果。我查看了爆炸效果的源代码,发现它正在排队。有什么办法可以防止它被排队,这样我就可以在爆炸效果的同时运行多个动画?
谢谢!
【问题讨论】:
标签: javascript jquery user-interface explode effect
我正在尝试同时应用动画,其中之一是 UI 爆炸效果。我查看了爆炸效果的源代码,发现它正在排队。有什么办法可以防止它被排队,这样我就可以在爆炸效果的同时运行多个动画?
谢谢!
【问题讨论】:
标签: javascript jquery user-interface explode effect
我不熟悉具体的爆炸效果,但我知道 jQuery animate() 允许使用 queue 选项(参见 http://api.jquery.com/animate/ - 有一个如何使用此选项的示例)来确定是否放置效果队列中所需的动画。如果为 false,则动画不会被放入队列并立即开始。这有帮助吗?
【讨论】:
问题在于爆炸功能的设计方式。
它从顶部和左侧获取元素的偏移量。它测量这些以计算返回的位置、行驶的距离等。没有这些值,它就无法做出这些决定。它的构建不够健壮,无法支持动态计算;理所当然。
我可以用三个例子来证明这个理论。
第一:
第二:
Attempting to Inject using setTimeout returns error offset.top() is null
这使您能够清楚地了解为什么会发生这种情况。最明显的答案是,除非您更改了代码的核心功能,否则此解决方案无法修复。
这让我想到了最后一个例子。在下面的示例中,我们将元素包装在一个 div 中。我们为父元素的位置设置动画,然后分解子元素。让我们看看它是如何工作的。
第三:
As we can see here, the issue is in how the offset is calculated.
它可以得到结束和开始,但它不能抓住动画中间的偏移量。
我相信这也是您所指的问题 - 不幸的是(总的来说)除了自己编写之外,您无能为力。
【讨论】: