JSFiddle - React, Tailwind, and code Playground
HTML
<svg viewBox="0 0 60 60">
<circle cx="30" cy="30" r="10" stroke-dasharray="0.001, 1.745" stroke="hsl(120, 100%, 50%)"/>
<circle cx="30" cy="30" r="12" stroke-dasharray="0.001, 2.094" stroke="hsl(108, 100%, 50%)"/>
<circle cx="30" cy="30" r="14" stroke-dasharray="0.001, 2.443" stroke="hsl(96, 100%, 50%)"/>
<circle cx="30" cy="30" r="16" stroke-dasharray="0.001, 2.793" stroke="hsl(84, 100%, 50%)"/>
<circle cx="30" cy="30" r="18" stroke-dasharray="0.001, 3.142" stroke="hsl(72, 100%, 50%)"/>
<circle cx="30" cy="30" r="20" stroke-dasharray="0.001, 3.491" stroke="hsl(60, 100%, 50%)"/>
<circle cx="30" cy="30" r="22" stroke-dasharray="0.001, 3.840" stroke="hsl(48, 100%, 50%)"/>
<circle cx="30" cy="30" r="24" stroke-dasharray="0.001, 4.189" stroke="hsl(36, 100%, 50%)"/>
<circle cx="30" cy="30" r="26" stroke-dasharray="0.001, 4.538" stroke="hsl(24, 100%, 50%)"/>
<circle cx="30" cy="30" r="28" stroke-dasharray="0.001, 4.887" stroke="hsl(12, 100%, 50%)"/>
</svg>
CSS
body {
background: black;
padding: 0;
margin: 0;
}
circle {
fill: none;
stroke-width: .9;
stroke-linecap: round;
}
circle { -webkit-transform-origin: center center; -moz-transform-origin: center center; transform-origin: center center; }
circle:nth-child(even) { -webkit-transform: rotate(5deg); -moz-transform: rotate(5deg); transform: rotate(5deg); }
circle:nth-child(2) { -webkit-animation:second 3s ease-in-out infinite; -moz-animation:second 3s ease-in-out infinite; animation:second 3s ease-in-out infinite; }
circle:nth-child(3) { -webkit-animation:third 3s ease-in-out infinite; -moz-animation:third 3s ease-in-out infinite; animation:third 3s ease-in-out infinite; }
circle:nth-child(4) { -webkit-animation:fourth 3s ease-in-out infinite; -moz-animation:fourth 3s ease-in-out infinite; animation:fourth 3s ease-in-out infinite; }
circle:nth-child(5) { -webkit-animation:fifth 3s ease-in-out infinite; -moz-animation:fifth 3s ease-in-out infinite; animation:fifth 3s ease-in-out infinite; }
circle:nth-child(6) { -webkit-animation:sixth 3s ease-in-out infinite; -moz-animation:sixth 3s ease-in-out infinite; animation:sixth 3s ease-in-out infinite; }
circle:nth-child(7) { -webkit-animation:seventh 3s ease-in-out infinite; -moz-animation:seventh 3s ease-in-out infinite; animation:seventh 3s ease-in-out infinite; }
circle:nth-child(8) { -webkit-animation:eighth 3s ease-in-out infinite; -moz-animation:eighth 3s ease-in-out infinite; animation:eighth 3s ease-in-out infinite; }
circle:nth-child(9) { -webkit-animation:ninth 3s ease-in-out infinite; -moz-animation:ninth 3s ease-in-out infinite; animation:ninth 3s ease-in-out infinite; }
circle:nth-child(10) { -webkit-animation:tenth 3s ease-in-out infinite; -moz-animation:tenth 3s ease-in-out infinite; animation:tenth 3s ease-in-out infinite; }
@-webkit-keyframes second { 100% { -webkit-transform:rotate(15deg) } }
@-webkit-keyframes third {...