Simple but awesome loading animation

Posted on October 23rd, 2019

Below is a simple but awesome loading animation with html and css only from Darkcode. Just click on the button Run Pen to see how it works:

How to create an awesome loading animation

Step 1: Add Html

<div class="container">
  <div class="box"></div>
  <div class="box"></div>
</div>

Step 2: Add CSS

body {
  margin: 0;
  padding: 0;
  background: #344;
}

.container {
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  width: 60px;
  height: 60px;
}

.box {
  position: absolute;
  width: 30px;
  height: 30px;
  background: #e74c3c;
}

.box:nth-child(1) {
  animation: a1 2s infinite linear;
}

.box:nth-child(2) {
  animation: a2 2s infinite linear;
}

@keyframes a1 {
  0% {
    top: 0;
    left: 0;
    width: 30px;
    height: 30px;
  }
  12.5% {
    top: 0;
    left: 0;
    width: 60px;
    height: 30px;
  }
  25% {
    top: 0;
    left: 0;
    width: 60px;
    height: 30px;
  }
  37.5% {
    top: 0;
    left: 30px;
    width: 30px;
    height: 30px;
  }
  50% {
    top: 0;
    left: 30px;
    width: 30px;
    height: 30px;
  }
  62.5% {
    top: 0;
    left: 30px;
    width: 30px;
    height: 60px;
  }
  75% {
    top: 0;
    left: 30px;
    width: 30px;
    height: 60px;
  }
  87.5% {
    top: 30px;
    left: 30px;
    width: 30px;
    height: 30px;
  }
  100% {
    top: 30px;
    left: 30px;
    width: 30px;
    height: 30px;
  }
}

@keyframes a2 {
  0% {
    right: 0;
    bottom: 0;
    width: 30px;
    height: 30px;
  }
  12.5% {
    right: 0;
    bottom: 0;
    width: 30px;
    height: 30px;
  }
  25% {
    right: 0;
    bottom: 0;
    width: 60px;
    height: 30px;
  }
  37.5% {
    right: 0;
    bottom: 0;
    width: 60px;
    height: 30px;
  }
  50% {
    right: 30px;
    bottom: 0;
    width: 30px;
    height: 30px;
  }
  62.5% {
    right: 30px;
    bottom: 0;
    width: 30px;
    height: 30px;
  }
  75% {
    right: 30px;
    bottom: 0;
    width: 30px;
    height: 60px;
  }
  87.5% {
    right: 30px;
    bottom: 0;
    width: 30px;
    height: 60px;
  }
  100% {
    right: 30px;
    bottom: 30px;
    width: 30px;
    height: 30px;
  }
}