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);
}