JSFiddle - React, Tailwind, and code Playground
by Alexandru Gatea
HTML
<div class="spinner">
<span class="ball-1"></span>
<span class="ball-2"></span>
<span class="ball-3"></span>
<span class="ball-4"></span>
<span class="ball-5"></span>
<span class="ball-6"></span>
<span class="ball-7"></span>
<span class="ball-8"></span>
</div>
CSS
.spinner {
position: absolute;
top: 18px;
right: 0px;
z-index: 1;
height: 30px;
width: 30px;
/* -webkit-transition: cubic-bezier(0, 0, 1,-0.31);
-moz-transition: cubic-bezier(0, 0, 1,-0.31);
-o-transition: cubic-bezier(0, 0, 1,-0.31);
transition: cubic-bezier(0, 0, 1,-0.31); */
left: 0;
margin: auto;
transform: scale(3);
}
.spinner {
left: 0;
top: 180px;
height: 66px;
width: 26px;
}
[class^="ball-"] {
position: absolute;
display: block;
left: 16px;
width: 12px;
height: 12px;
border-radius: 6px;
transition: all 0.1s;
top: 4px;
animation: circleRotate 4s both infinite;
transform-origin: 0 100% 0;
}
[class^=ball-] {
border-radius: 26px;
width: 26px;
height: 26px;
}
.ball-1 {
z-index: -1;
background-color: #5276ff;
animation-timing-function: cubic-bezier(0.5, 0.3, 0.9, 0.9);
}
.ball-2 {
z-index: -2;
background-color: #03A9F4;
animation-timing-function: cubic-bezier(0.5, 0.6, 0.9, 0.9);
}
.ball-3 {
z-index: -3;
background-color: #00BCD4;
animation-timing-function: cubic-bezier(0.5, 0.9, 0.9, 0.9);
}
.ball-4 {
z-index: -4;
background-color: #45dbbe;
animation-timing-function: cubic-bezier(0.5, 1.2, 0.9, 0.9);
}
.ball-5 {
z-index: -5;
background-color: #4CAF50;
animation-timing-function: cubic-bezier(0.5, 1.5, 0.9, 0.9);
}
.ball-6 {
z-index: -6;
background-color: #f95943;
animation-timing-function: cubic-bezier(0.5, 1.8, 0.9, 0.9);
}
.ball-7 {
z-index: -7;
background-color: #ffe153;
animation-timing-function: cubic-bezier(0.5, 2.1, 0.9, 0.9);
}
.ball-8 {
z-index: -8;
background-color: #FFEB3B;
animation-timing-function: cubic-bezier(0.5, 2.4, 0.9, 0.9);
}
@keyframes circleRotate {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(1440deg);
}
}