console
<div class="animate-icon">
<div class="flat circle-outer">
<div class="content"></div>
</div>
<div class="flat circle-inner">
<div class="content"></div>
</div>
<div class="circle-ball"></div>
<div class="flat circle-pie pie-spin">
<div class="content pie0"></div>
<div class="content pie1"></div>
<div class="content pie2"></div>
<div class="content pie3"></div>
<div class="content pie4"></div>
</div>
</div>
.animate-icon {
width: 200px;
height: 200px;
background: #2A2A2A;
}
.flat {
transform: scaleY(0.375);
}
.circle-outer {
position: relative;
left: 20px;
top: 70px;
}
.circle-outer .content {
width: 160px;
height: 160px;
border-radius: 80px;
background: conic-gradient(fuchsia, pink, orange, gold, snow);
--mask: radial-gradient(closest-side, transparent 94%, black 94%);
-webkit-mask-image: var(--mask);
mask-image: var(--mask);
animation: spin 4s linear infinite;
}
.circle-inner {
position: relative;
left: 40px;
top: -72px;
}
.circle-inner .content {
width: 120px;
height: 120px;
border-radius: 60px;
background: conic-gradient(blue 40%, teal 72%, cyan 88%, blue);
--mask: radial-gradient(closest-side, transparent 94%, black 94%);
-webkit-mask-image: var(--mask);
mask-image: var(--mask);
animation: spin-r 4s linear infinite;
}
.circle-ball {
position: absolute;
width: 12px;
height: 12px;
border-radius: 6px;
background: snow;
animation: animX 2s cubic-bezier(0.36, 0, 0.64, 1) -1s infinite alternate, animY 2s cubic-bezier(0.36, 0, 0.64, 1) 0s infinite alternate, spin-ball 4s cubic-bezier(0.36, 0, 0.64, 1) 0s infinite alternate;
}
.circle-pie {
position: absolute;
top: 200px;
left: 58px;
}
.circle-pie .content {
position: absolute;
opacity: 0.6;
width: 100px;
height: 100px;
border-radius: 50px;
background: radial-gradient(seagreen 30%, limegreen 80%, lime);
}
.pie-spin .content {
background: conic-gradient(lime 10%, mediumseagreen 30%, forestgreen 80%, lime);
}
.pie0 {
top: -188px;
}
.pie-spin .pie0 {
animation: spin-r 4s infinite, pie-opa 4s infinite;
}
.pie1 {
top: -240px;
}
.pie-spin .pie1 {
animation: spin-r 4s infinite, pie-opa 4s infinite, pie-ani1 4s infinite;
}
.pie2 {
top: -293px;
}
.pie-spin .pie2 {
animation: spin-r 4s infinite, pie-opa 4s infinite, pie-ani2 4s infinite;
}
.pie3 {
top: -345px;
}
.pie-spin .pie3 {
animation: spin-r 4s infinite, pie-opa 4s infinite, pie-ani3 4s infinite;
}
.pie4 {
top: -397px;
}
.pie-spin .pie4 {
animation: spin-r 4s infinite, pie-opa 4s infinite, pie-ani4 4s infinite;
}
@keyframes spin {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
@keyframes spin-r {
0% {
transform: rotate(360deg);
}
100% {
transform: rotate(0deg);
}
}
@keyframes animX {
0% {
left: 24px;
}
100% {
left: 178px;
}
}
@keyframes animY {
0% {
top: 122px;
}
100% {
top: 182px;
}
}
@keyframes spin-ball {
0% {
transform: scale(0.64);
}
50% {
transform: scale(1);
}
100% {
transform: scale(0.64);
}
}
@keyframes pie-opa {
0% {
opacity: 0.3;
}
50% {
opacity: 0.6;
}
100% {
opacity: 0.3;
}
}
@keyframes pie-ani1 {
0% {
top: -198px;
}
30% {
top: -240px;
}
70% {
top: -240px;
}
100% {
top: -198px;
}
}
@keyframes pie-ani2 {
0% {
top: -208px;
}
30% {
top: -293px;
}
70% {
top: -293px;
}
100% {
top: -208px;
}
}
@keyframes pie-ani3 {
0% {
top: -218px;
}
30% {
top: -345px;
}
70% {
top: -345px;
}
100% {
top: -218px;
}
}
@keyframes pie-ani4 {
0% {
top: -228px;
}
30% {
top: -397px;
}
70% {
top: -397px;
}
100% {
top: -228px;
}
}