<svg width="100" height="100" viewBox="0 0 100 100">
    <circle class="dot" cx="30" cy="50" r="4" fill="#3498db" />
    <circle class="dot" cx="50" cy="50" r="4" fill="#3498db" />
    <circle class="dot" cx="70" cy="50" r="4" fill="#3498db" />
  </svg>
  <h3>Loading Dots</h3>
body {
  display: flex;
  background: #e7e7e7;
  justify-content: center;
  align-items:center;
  min-height: 100vh;
}
svg {
  width: 100px;
  height: 100px;
}

@keyframes reveal {
  0%,
  100% {
    opacity: 0.2;
  }
  50% {
    opacity: 1;
  }
}

.dot {
  animation: reveal 1.4s infinite;
  animation-fill-mode: both;
}
.dot:nth-child(2) {
  animation-delay: 0.2s;
}
.dot:nth-child(3) {
  animation-delay: 0.4s;
}


h3 {
  padding: 30px;
}

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

This Pen doesn't use any external JavaScript resources.