第一个jQuery.animate()不工作



我对jQuery、JavaScript等很陌生我一直在努力制作一些动画:

目前,我在这里有一个部分工作演示:http://jsbin.com/uwonun/64/

多亏了jwags,第二个.animate()可以工作了。

我一直在尝试实现相同的动画效果,这样我就可以替换.slideDown().

我最近的尝试可以在这里找到:http://jsbin.com/OYebomEB/1/

请注意,随着这项工作的继续,代码将发生变化。

function anim_loop(index) {
  $(elements[index]).css({top: 0, display: 'none'}).animate({top: -75},1000, function() {
    var $self = $(this);
    setTimeout(function() {
        $self.animate({top: $(window).height() + 10}, 1000);
        anim_loop((index + 1) % elements.length);
        }, 3000);
    });
}

您设置了display:none,但之后再也不会显示它。

animate():之前,在setTimeout()中使用css('display','block')

setTimeout(function() {
    $self.css('display','block').animate({top: $(window).height() + 10}, 1000);
        anim_loop((index + 1) % elements.length);
    }, 3000);
});

您可以在初始化时设置opacity:0,在第二个animate()中设置opacity:1,使其平滑显示;)

编辑

为了让第一个循环像其他循环一样工作,您必须在元素在屏幕上渲染之前显示它们,方法是在animate():之前设置display:block

function anim_loop(index) {
  $(elements[index]).css({top:-75, display: 'block'}).animate({top: '+0'},1000, function() {
        var $self = $(this);
        setTimeout(function() {
$self.animate({top: $(window).height() + 10}, 1000);
            anim_loop((index + 1) % elements.length);
        }, 3000);
    });
}

最新更新