jQuery Transit动画重叠

时间:2014-01-02 08:15:57

标签: javascript jquery css transitions jquery-transit

我遇到重叠转换的问题 - 一个转换在前一个转换开始之前就开始了。

$obj.stop(true, false).transition({'-webkit-transform': 'translateX(' + (pos)  + 'px)', 'width':width + 'px'},  1500 );

JsFiddle示例:http://jsfiddle.net/s4r88/18/

如果您足够快地悬停按钮,您将看到动画“跳转”到其最终设置而没有过渡。 我尝试过使用.stop()和.clearQueue()方法无济于事。

我知道还有其他方法可以实现这一点(jQuery.animate(),编写静态css),但我认为必须有一种方法可以在jQuery.transitions中解决这个问题。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

jQuery过渡将默认链接动画。所以,不要像在代码中那样使用任何stop()方法。实际上stop()不适用于transition()。

_$blackLine.transition({'-webkit-transform': 'translateX(' + (pos)  + 'px)', 'width':width + 'px'},  1500 );// without stop() method

http://jsfiddle.net/s4r88/24/

需要注意的是,如果您将所有菜单都悬停在上面,则所有动画都会一个接一个地播放。 作为旁注,有一些jQuery Transit的pull请求/分支添加了stop()functionnality:https://github.com/rstacruz/jquery.transit/pulls

答案 1 :(得分:0)

这是一个老线程,所以你可能不再有问题了,但是对于那些通过搜索来到这里的人来说,问题是堆叠动画和动画太慢了。

如果你避免使用stop()并使用clearQueue()然后将动画时间从1.5秒减少到400毫秒,问题似乎就解决了。

_$blackLine.clearQueue().transition({'-webkit-transform': 'translateX(' + (pos)  + 'px)', 'width':width + 'px'},  400 );

请参阅此处的小提琴:http://jsfiddle.net/2abg1cn5/

相关问题