#jquery #jquery-animate
#jquery #jquery-анимировать
Вопрос:
У меня проблема. Я пытаюсь запрограммировать плагин snow jQuery для своих веб-сайтов, но теперь мне нужно дождаться завершения анимации одного элемента, прежде чем появится следующий. Надеюсь, вы знаете, что я думаю. Спасибо.
$(document).ready(function() {
var width = $(window).width();
var height = $(window).height();
var startw = 0;
for (var i=0; i<5; i ) {
startw = 0 Math.floor(Math.random() * width);
$('<div class="flake" id="' i '"></div>').appendTo('body');
var element = ".flake#" i;
$(element).css('margin-left', startw 'px');
$(element).animate({'margin-top': height-18}, 1000).delay(350).fadeOut(250);
}
});
Комментарии:
1. Вы можете поместить другие анимации в обратные вызовы исходных анимаций.
Ответ №1:
Вы знаете, что «продолжительность жизни» каждого фрагмента будет составлять 1600 мс, поэтому вы могли бы просто использовать setTimeout
с таймаутом i*1600
:
$(function () {
var width = $(window).width();
var height = $(window).height();
var flakeLifeSpan = 1600;
var startw = 0;
for (var i = 0; i < 5; i ) {
setTimeout(function () {
startw = 0 Math.floor(Math.random() * width);
var element = $('<div class="flake"">F</div>');
element.appendTo($("body"));
$(element).css('margin-left', startw 'px');
$(element).animate({
'margin-top': height - 18
}, 1000).delay(350).fadeOut(250);
}, i * flakeLifeSpan);
}
});
Раньше я F
видел flake, я предполагаю, что у вас будет изображение, заданное CSS. Просто удалите F
для ваших целей.