SOURCE

console 命令行工具 X clear

                    
>
console
<div class="loading">
    <div class="left"></div>
    <div class="right"></div>
    <div class="bot"></div>
</div>
@keyframes a {
  0% {
    transform: rotateZ(0deg);
  }
  100% {
    transform: rotateZ(360deg);
  }
}

.loading {
    margin: 100px auto;
    width: 8em;
    height: 8em;
    position: relative;
  overflow: hidden;
  border-radius: 4em;
  animation: a .5s linear infinite;
}
.loading::after {
  content: '';
  display: block;
  width: 6em;
  height: 6em;
  border-radius: 3em;
  background: #fff;
  position: absolute;
  z-index: 99;
  left: 1em;
  top: 1em;
}
 
.loading .progress {
    position: absolute;
    width: 6em;
    height: 6em;
    background-color: white;
    border-radius: 50%;
    left: 1em;
    top: 1em;
    line-height: 6em;
    text-align: center;
}
 
.left,
.right {
    width: 4em;
    height: 8em;
    overflow: hidden;
    position: relative;
    float: left;
    background-color: #999999
}
 
.left {
    border-radius: 8em 0 0 8em;
}
 
.right {
    border-radius: 0 8em 8em 0;
}
 
.left:after,
.right:after {
    content: "";
    position: absolute;
    display: block;
    width: 4em;
    height: 8em;
    background-color: white;
    border-radius: 8em 0 0 8em;
    background-color: red;
}
 
.right:after {
    content: "";
    position: absolute;
    display: block;
    border-radius: 0 8em 8em 0;
}
.left:after {
    transform-origin: right center;
}
 
.right:after {
    transform-origin: left center;
    transform: rotateZ(90deg);
}
.bot {
  width: 8em;
  height: 4em;
  background: green;
  position: absolute;
  bottom: 0;
  border-radius: 0 0 4em 4em;
}

.bot::after {
  content: '';
  width: 4em;
  height: 4em;
  background: black;
  position: absolute;
  display: block;
  bottom: 0;
  left: 0;
  z-index: 9;
}