JSFiddle - React, Tailwind, and code Playground
HTML
<div class="spinner-wrap">
<div class="spinner spinner-1">
<div class="button button-1"></div>
<div class="mask"></div>
</div>
<div class="spinner spinner-2">
<div class="button button-2"></div>
<div class="mask"></div>
</div>
<div class="spinner spinner-3">
<div class="button button-3"></div>
<div class="mask"></div>
</div>
</div>
CSS
body{
background: #71CEF0;
}
.spinner{
width: 50px;
height: 50px;
border-radius: 50%;
position: relative;
}
.spinner-1{
display: none;
background: #5BAECC;
}
.spinner-2{
display: none;
background: white;
}
.spinner-3{
display: none;
background: #FFC700;
}
.button{
position: relative;
display: inline-block;
width: 25px;
height: 50px;
border: solid transparent;
border-width: 0 0 0 25px;
border-radius: 50px;
outline: none;
overflow: hidden;
}
.button:before{
content: "";
position: absolute;
left: -25px;
height: 50px;
border-right: 25px solid transparent;
border-radius: 50px;
animation: rotate1 1s linear infinite;
}
.button-1 {
-webkit-animation: background1 1s linear infinite;
animation: background1 1s linear infinite;
}
.button-2{
-webkit-animation: background2 1s linear infinite;
animation: background2 1s linear infinite;
}
.button-3{
-webkit-animation: background3 1s linear infinite;
animation: background3 1s linear infinite;
}
.button-1:before {
border-left: 25px solid white;
-webkit-animation: rotate1 1s linear infinite;
}
.button-2:before {
border-left: 25px solid #FFC700;
-webkit-animation: rotate2 1s linear infinite;
}
.button-3:before {
border-left: 25px solid #5BAECC;
-webkit-animation: rotate3 1s linear infinite;
}
.mask{
width: 40px;
height: 40px;
border-radius: 50%;
background: #71CEF0;
position: absolute;
top: 0;
left: 0;
margin-top: 5px;
margin-left: 5px;
}
@-webkit-keyframes background1 {
49.999% {border-width: 0 0 0 25px; border-color: transparent;}
50%, 100% {border-width: 0 25px 0 0; border-color: white;}
}
@-webkit-keyframes rotate1 {
49.999% {left: -25px;}
50% {left: 0px;}
100% {-webkit-transform: rotate(360deg); left: 0px;}
}
@keyframes background1 {
49.999% {border-width: 0 0 0 25px; border-color: transparent;}
50%, 100% {border-width: 0 25px 0 0; border-color: white;}
}
@keyframes rotate1 {
...
JavaScript
$(function(){
var s1 = $('.spinner-1'),
s2 = $('.spinner-2'),
s3 = $('.spinner-3');
s1.css('display', 'block');
function changeSpiner(){
if(s1.css('display') == 'block'){
s1.hide();
s2.show();
}
else if(s2.css('display') == 'block'){
s2.hide();
s3.show();
}
else if(s3.css('display') == 'block'){
s1.show();
s3.hide();
}
}
setInterval(changeSpiner, 1000);
});