У меня есть страница, использующая infinite-scroll.js, которая загружает 8 .product
div при начальной загрузке (и добавляет класс .loaded
), а затем еще один 8 .product
div при нажатии кнопки для запуска бесконечного-scroll (который добавляет класс .appended
к каждому).
Я пытаюсь добавить добавочный transition-delay
к каждому .product
(первые 100 мс, вторые 200 мс, третьи 300 мс и т. д.), новступают в силу только тогда, когда они добавлены в DOM.Код, который я сейчас использую, добавляет transition-delay
ко всем .product
div'ам, использующим :nth-child()
, что означает, что при добавлении дополнительных элементов они имеют длинный transition-delay
.Например, первый добавленный элемент в настоящее время использует, например, :nth:child(9)
(поэтому имеет большую задержку в 900 мс), но я хочу, чтобы цикл задержки перехода начинался заново, то есть :nth-child(1)
(100 мс).
HTML
<div class="product loaded">Product 1</div>
<div class="product loaded">Product 2</div>
<div class="product loaded">Product 3</div>
<div class="product loaded">Product 4</div>
<div class="product loaded">Product 5</div>
<div class="product loaded">Product 6</div>
<div class="product loaded">Product 7</div>
<div class="product loaded">Product 8</div>
<!-- Appended upon running of infinite-scroll.js -->
<div class="product appended">Product 9</div>
<div class="product appended">Product 10</div>
<div class="product appended">Product 11</div>
<div class="product appended">Product 12</div>
<div class="product appended">Product 13</div>
<div class="product appended">Product 14</div>
<div class="product appended">Product 15</div>
<div class="product appended">Product 16</div>
SCSS
.product {
// Step fade
@for $i from 1 to 50 {
&:nth-child(#{$i}) { transition-delay: $i * 100ms; }
}
}
JQUERY (добавляет класс к добавляемым элементам)
// Add class to appended items to enable step fade
$grid.on( 'append.infiniteScroll', function(event, response, path, items) {
$(items).delay(10).queue(function() {
$(this).addClass('appended');
});
});