jQuery动画问题?

时间:2014-02-01 02:41:31

标签: javascript jquery html css jquery-animate

到目前为止,我有一个相当不错的代码来动画中心框。出于某种原因,当我在不同的浏览器和计算机(Mac和PC)上预览时,我会得到不同的结果。一个可以显示更快的动画速度,而另一个是完美的。我也注意到当盒子从左到右动画时,有一个口吃,动画突然出现。我不能真正解释它。我的代码如下:

$(document).ready(function(){

        isAnimating = false;

$('.wrapper').on('click', '.arrow-left', function() {
    if(isAnimating) return;

    isAnimating = true;
    var $current = $(this).parents('.signupBox');
    var $next = $(this).parents('.signupBox').next();

    $current.stop(true,true).animate({
        left: "200%"
    }, 500, 'linear', function() {
        $current.css({
                left: "-200%"
            }).appendTo('.wrapper'); // move to end of stack

        $next.css({
                left: "-200%"
            }).stop(true,true).animate({
                left: "0%"
            }, 500, 'linear', function() {
                isAnimating = false;
            });
    });

}).on('click', '.arrow-right', function() {
    if(isAnimating) return;

    isAnimating = true;
    var $current = $(this).parents('.signupBox');
    var $next = $(this).parents('.signupBox').siblings().last();

    $current.stop(true,true).animate({
        left: "-200%"
    }, 500, 'linear', function() {
        $current.css({
                left: "200%"
            });

        $next.prependTo('.wrapper') // move to front of stack
            .css({
                left: "200%"
            }).stop(true,true).animate({
                left: "0%"
            }, 500, 'linear', function() {
                isAnimating = false;
            });
    });
});

});

一些CSS:

.signupBox:first-child {
    display: block;
}
.signupBox {
    display: none;
}

.wrapper
{
    overflow: hidden;
    width: 100%;
    height: 100%;
    margin: 0px;
    padding: 0px;
    position: absolute;
}

Here's a JSFiddle显示会发生什么,希望你能从那里看到问题所在。

然后从右到左动画(单击<符号,您将看到速度的轻微变化。

1 个答案:

答案 0 :(得分:0)

使用JS和css转换时,不同的浏览器可能会有不同的结果,它实际上取决于您的机器速度,浏览器速度。它可能取决于每个浏览器中打开的标签数量,浏览器插件也可以冻结动画。其他JS活动也是如此。

我已经在Chrome,FF中测试过您的代码(无法在IE11中检查它,似乎jsfiddler上使用jQuery存在JS错误)。没有提到一些奇怪的东西。

我可以推荐使用Greenshock JS动画库。 http://www.greensock.com/get-started-js/ 他们说这是jQuery动画的x20倍。但我认为实际上可能在2,3)

该libruary基于Flash库,Action Script编码器使用Flash库在Flash中创建美颜动画。