Bouncing loader
Creates a bouncing loader animation.
<div class="bouncing-loader">
<div></div>
<div></div>
<div></div>
</div>
@keyframes bouncing-loader {
to {
opacity: 0.1;
transform: translate3d(0, -1rem, 0);
}
}
.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-child(2) {
animation-delay: 0.2s;
}
.bouncing-loader > div:nth-child(3) {
animation-delay: 0.4s;
}
Explanation
Note: 1rem is usually 16px.
@keyframesdefines an animation that has two states, where the element changesopacityand is translated up on the 2D plane usingtransform: translate3d(). Using a single axis translation ontransform: translate3d()improves the performance of the animation..bouncing-loaderis the parent container of the bouncing circles and usesdisplay: flexandjustify-content: centerto position them in the center..bouncing-loader > div, targets the three childdivs of the parent to be styled. Thedivs are given a width and height of1rem, usingborder-radius: 50%to turn them from squares to circles.margin: 3rem 0.2remspecifies that each circle has a top/bottom margin of3remand left/right margin of0.2remso that they do not directly touch each other, giving them some breathing room.animationis a shorthand property for the various animation properties:animation-name,animation-duration,animation-iteration-count,animation-directionare used.nth-child(n)targets the element which is the nth child of its parent.animation-delayis used on the second and thirddivrespectively, so that each element does not start the animation at the same time.