Nth Child Animation Delay
by pradeep
HTML
<style>
.animations{
background-color: cyan;
}
.item {
width: 100px;
height: 100px;
float: left;
padding: 20px;
margin: 5px;
transition: all 0.5s;
}
</style>
<ul>
<li class="item">Item 1</li>
<li class="item">Item 2</li>
<li class="item">Item 3</li>
<li class="item">Item 4</li>
</ul>
CSS
li {
opacity: 0;
-webkit-animation: fadeIn 0.9s 1;
animation: fadeIn 0.9s 1;
-webkit-animation-fill-mode: forwards;
animation-fill-mode: forwards;
}
li:nth-child(5n+1) {
-webkit-animation-delay: 0.5s;
animation-delay: 0.5s;
}
li:nth-child(5n+2) {
-webkit-animation-delay: 1.0s;
animation-delay: 1.0s;
}
li:nth-child(5n+3) {
-webkit-animation-delay: 1.5s;
animation-delay: 1.5s;
}
li:nth-child(5n+4) {
-webkit-animation-delay: 2.0s;
animation-delay: 2.0s;
}
li:nth-child(5n+5) {
-webkit-animation-delay: 2.5s;
animation-delay: 2.5s;
}
/* Animation steps */
@-webkit-keyframes fadeIn {
0% {
opacity: 0.0;
}
100% {
opacity: 1.0;
}
}
@keyframes fadeIn {
0% {
opacity: 0.0;
}
100% {
opacity: 1.0;
}
JavaScript
/* $('ul li').each(function(i){
var t = $(this);
setTimeout(function(){ t.addClass('animations'); }, (i+1) * 1500);
}); */
const listItems = document.querySelectorAll('ul li');
for (let i = 0; i < listItems.length; i++) {
setTimeout(function(){ listItems[i].classList.add('animations'); }, (i+1) * 1500);
}