<div class="circles">
  <div></div>
  <div></div>
  <div></div>
  <span></span>
</div>
$width: 50vmin;

* {
  box-sizing: border-box;
}

html, body {
  width: 100%;
  height: 100%;
}

body {
  display: flex;
  justify-content: center;
  align-items: center;
  background: #2A2C2E;
}

.circles {
  width: $width;
  height: $width;
  position: relative;
  perspective: 50000px;
  color: #61DAFB;
  
  span {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    display: block;
    width: 18.4%;
    height: 18.4%;
    border-radius: 100%;
    background: currentColor;
  }
  
  div {
    position: absolute;
    width: 100%;
    height: 100%;
    border-left:
      $width / 25 solid;
    border-top:
      $width / 25 solid transparent;
    border-radius: 100%;
    
    @for $i from 1 through 3 {
      &:nth-child(#{$i}) {
        animation: anim-#{$i} 1s linear infinite;
      }
    }
  }
}

@for $i from 1 through 3 {
  @keyframes anim-#{$i} {
    from {
      transform:
        rotateZ(360deg / 3 * $i)
        rotateX(66deg)
        rotateZ(0deg);
    }
    to {
      transform:
        rotateZ(360deg / 3 * $i)
        rotateX(66deg)
        rotateZ(360deg);
    }
  }
}
View Compiled

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

This Pen doesn't use any external JavaScript resources.