Я работаю над созданием галереи изображений, где изображения будут сгенерированы постепенным замиранием в слоях один поверх другого, чтобы сформировать окончательное изображение.Как я могу анимировать недавно созданный элемент DOM в одной и той же функции?
У меня есть много таких слоев, так вместо того, чтобы загружать их на множество различных <img>
элементов сразу (что замедлит время загрузки) Я хочу начать с одной <img id="base">
, а затем постепенно добавлять элементы изображения с JQuery .after()
метод, назначить им соответствующие источники и затухать их с задержкой.
Проблема в том, что я не могу прикрепить анимации к вновь созданным элементам, потому что (я предполагаю) они еще не существуют в пределах одной и той же функции. Вот мой код:
HTML
<div id="gallery">
<img id="base" src="image-1.jpg">
</div>
CSS
#base {
opacity: 0;
}
.layers {
position: absolute;
top: 0;
left: 0;
opacity: 0;
}
JavaScript
$(document).ready(function() {
$("#base").animate({opacity: 1}, 300); //fade in base
for (var i = 1; i <= numberOfLayers; i++, gap += 300) {
// create a new element
$("#base").after("<img class='layers' src='" + imgName + ".png'>");
// fade that new element in
$("#gallery").children().eq(i).delay(gap).animate({opacity: '1'}, 300);
}
}
Пожалуйста, п что я изменил свой фактический код, чтобы проиллюстрировать это лучше. Я довольно новичок в JavaScript, но я быстр, поэтому я был бы признателен, если бы вы могли сказать мне, что я делаю неправильно, и какое решение я должен преследовать.
Можете ли вы предоставить демо на http://jsfiddle.net? – undefined
@Vohuman да, надеюсь [это] (http://jsfiddle.net/johnnymates/m8m0eL3v/1/) помогает –
@IonMates надеется, что [это] (http://jsfiddle.net/pgoevx03/1/) помогает .. Я посмотрел на вашу обновленную скрипку и понял, что не так с тем, что я изначально предложил. –