Skip to content

Latest commit

 

History

History
113 lines (93 loc) · 2.67 KB

bouncing-loader.md

File metadata and controls

113 lines (93 loc) · 2.67 KB

Bouncing loader

Creates a bouncing loader animation.

HTML

<div class="bouncing-loader">
  <div></div>
  <div></div>
  <div></div>
</div>

CSS

@keyframes bouncing-loader {
  from {
    opacity: 1;
    transform: translateY(0);
  }
  to {
    opacity: 0.1;
    transform: translateY(-1rem);
  }
}
.bouncing-loader {
  display: flex;
  justify-content: center;
}
.bouncing-loader > div {
  width: 1rem;
  height: 1rem;
  margin: 3rem 0.2rem;
  background: #8385aa;
  border-radius: 50%;
  animation: bouncing-loader 0.6s infinite alternate;
}
.bouncing-loader > div:nth-of-type(2) {
  animation-delay: 0.2s;
}
.bouncing-loader > div:nth-of-type(3) {
  animation-delay: 0.4s;
}

Demo

<style> @keyframes bouncing-loader { from { opacity: 1; transform: translateY(0); } to { opacity: 0.1; transform: translateY(-1rem); } } .snippet-demo__bouncing-loader { display: flex; justify-content: center; } .snippet-demo__bouncing-loader > div { width: 1rem; height: 1rem; margin: 3rem 0.2rem; background: #8385aa; border-radius: 50%; animation: bouncing-loader 0.6s infinite alternate; } .snippet-demo__bouncing-loader > div:nth-child(2) { animation-delay: 0.2s; } .snippet-demo__bouncing-loader > div:nth-child(3) { animation-delay: 0.4s; } </style>

Explanation

Note: 1rem is usually 16px.

  1. @keyframes defines an animation that has two states, where the element changes opacity, and is translated up on the 2D plane using transform: translateY().

  2. .bouncing-loader is the parent container of the bouncing circles and uses display: flex and justify-content: center to position them in the in the center.

  3. Using .bouncing-loader > div, we target the three child divs of the parent to be styled. The divs are given a width and height of 1rem, using border-radius: 50% to turn them from squares to circles.

  4. margin: 3rem 0.2rem specifies that each circle has a top/bottom margin of 3rem and left/right margin of 0.2rem so that they do not directly touch each other, giving them some breathing room.

  5. animation is a shorthand property for the various animation properties: animation-name, animation-duration, animation-iteration-count, animation-direction are used.

  6. animation-delay is used on the second and third div respectively, so that each element does not start the animation at the same time.

Browser support

✅ No caveats.