<div class="loader">
  <svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 100 100" id=circle-middle><circle fill=#EDEDED cx=50 cy=50 r="6"/></svg>
  <svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 100 100"><circle fill=#26A6D1 cx=50 cy=50 r="4.5"/></svg>
  <svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 100 100"><circle fill=#26A6D1 cx=50 cy=50 r="4.5"/></svg>
  <svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 100 100"><circle fill=#26A6D1 cx=50 cy=50 r="4.5"/></svg>
  <svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 100 100"><circle fill=#26A6D1 cx=50 cy=50 r="4.5"/></svg>
  <svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 100 100"><circle fill=#26A6D1 cx=50 cy=50 r="4.5"/></svg>
  <svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 100 100"><circle fill=#26A6D1 cx=50 cy=50 r="4.5"/></svg>
  <svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 100 100"><circle fill=#26A6D1 cx=50 cy=50 r="4.5"/></svg>
  <svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 100 100"><circle fill=#26A6D1 cx=50 cy=50 r="4.5"/></svg>
  <svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 100 100"><circle fill=#26A6D1 cx=50 cy=50 r="4.5"/></svg>
  <svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 100 100"><circle fill=#26A6D1 cx=50 cy=50 r="4.5"/></svg>
  <svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 100 100"><circle fill=#26A6D1 cx=50 cy=50 r="4.5"/></svg>
  <svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 100 100"><circle fill=#26A6D1 cx=50 cy=50 r="4.5"/></svg>
</div>
// Demo SHITE
// ====================================
html,body {height: 100%;margin:0;}body{display: flex;flex-direction:column;align-items: center;justify-content:center;width:100%;background:#324D5B;}svg{max-width:100%;}


// Required SHITE
// ====================================

$circle-count: 13;
$loader-proportion: 100px;
$animation_config: (
  name: spin,
  duration: 1s,
  timing: ease-in-out,
  iteration: infinite,
  direction: alternate,
  fill-mode: both
);

@function sh-setup($config) {
  @return zip(map-values($config)...);
}

@keyframes spin {
  to {
    transform: rotate(360deg);
  }
}

.loader {
  animation: sh-setup($animation_config);
  height: $loader-proportion;
  position: relative;
  width: $loader-proportion;

  svg:not(#circle-middle) {
    animation: sh-setup($animation_config);
    position: absolute;
    top: -50%;
    left: 0;
    transform-origin: bottom center;
  }
}

@for $i from 1 through $circle-count {
  .loader svg:nth-of-type(#{$i}):not(#circle-middle) {
    transform: rotate(($i * (360/($circle-count - 1))) + deg);
  }
}
View Compiled
Run Pen

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

  1. https://codepen.io/grayghostvisuals/pen/a08e0d79c150ff5030f9b6afaa137749.js