【问题标题】:jQuery Animation Stop / Resume Techniques or PatternsjQuery 动画停止/恢复技术或模式
【发布时间】:2013-01-21 17:10:26
【问题描述】:

我看过其他一些半相关的帖子,但没有什么能真正 100% 回答我的问题。

无论如何,我想做的是 pause+fadeIn onHover,pause+fadeOut onHoverOut,这样动画不会完成,除非用户保持悬停或悬停。如果用户做了一堆快速悬停和悬停,我不希望它排队一堆连续的动画。我已经使用 stop() 和 clearQueue() 接近了,但是有问题。

如果我再次快速悬停、悬停和悬停,动画会暂停但不会过渡到下一个动画。事实上,足够的 hover 和 hoverOuts 会导致动画在我的计算机上完全停止。

查看下面的示例页面和附加的脚本。也许这个特定问题有一个共同的模式或方法?我在网上看到很多类似的事情,有时是渐变动画,有时是运动动画等。

在示例中,我有意使用较慢的动画时间,以便您有足够的时间来回悬停。

演示: http://ficreates.com/_SiteDemos/lwv2/

脚本: http://ficreates.com/_SiteDemos/lwv2/scripts/carNav.js

无论如何,提前感谢您能给我的任何帮助:) 我当然需要它!

【问题讨论】:

    标签: jquery animation hover onhover queuing


    【解决方案1】:

    这是你要找的吗?

        function carNav() {
            var $navBox = $("#nav_buttons li");
    
            $navBox.hover(
                function() {
                    var $navCar = $(this).find(".nav_car");
                    $navCar.fadeIn(2000);
                },
                function() {
                    var $navCar = $(this).find(".nav_car");                 
                    $navCar.stop().fadeOut(2000);
                }
            );
        }
    
        $(document).ready(carNav);
    

    演示 http://jsfiddle.net/m2pF5/

    或者您可以完全使用 css 来完成,(需要 ie 的后备)

    CSS DEMO http://jsfiddle.net/eNJ6x/1/

    【讨论】:

    • 我注意到,如果您执行以下步骤:Hover HoverOut
    • 对不起,我还没写完就发了。如果您悬停,hoverOut 并再次悬停,它仍然会无限期地冻结动画。您发布的代码是一个改进(谢谢),但奇怪的冻结仍然发生......我不太清楚为什么。
    • ...除非每次悬停事件发生时,新的悬停事件可能与旧的悬停事件在不同的范围内,因此无法直接操作排队的动画?
    • 我有另一个想法,但它不会在 ie6-9 中动画。如果它在这些浏览器中没有动画,对你有影响吗?
    • 嗯……我没想到!很好的解决方案。我知道这种方法对我的客户有用,但我仍然认为它会让我发疯,不知道如何解决这个问题。部分原因是我一直在尝试更好地处理这些微妙的 UI 小触摸,所以我想继续研究它,直到我弄清楚 jQuery 方法。这样,下次我会有一些不错的代码,我可以回去参考。
    猜你喜欢
    • 1970-01-01
    • 2011-07-31
    • 2017-09-29
    • 1970-01-01
    • 2017-05-24
    • 1970-01-01
    • 2013-11-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多