console
const orbitStyle = {
transform: `rotateX(70deg) rotateZ(${100 * -72}deg) translateZ(0)`,
};
const planetStyle = (index, l) => {
const average = l / 2;
const gap = 0.8 ** (average - Math.abs(Math.abs(index - (100 % l)) - average));
return {
transform: `rotateX(-90deg) rotateY(${360 -
activeCircle * 72}deg) rotateZ(0deg) scale(${gap})`,
opacity: gap,
};
};
<div class="orbit">
<div class="planet planet1">
</div>
<div class="planet planet2">
</div>
<div class="planet planet3">
</div>
<div class="planet planet4">
</div>
</div>
body{
background: #555;
}
.orbit {
border: 5px solid rgb(10, 148, 228);
transform-style: preserve-3d;
padding: 65px;
width: 500px;
height: 500px;
border-radius: 50%;
animation: orbit-rotate 10s linear infinite;
}
.planet {
width: 80px;
height: 80px;
border: 4px solid green;
background-size: 100% 100%;
border-radius: 50%;
animation: self-rotate 10s linear infinite;
transform: rotateX(-90deg)
}
@keyframes orbit-rotate {
0% {
transform: rotateX(70deg) rotateZ(0deg) translateZ(0);
}
100% {
transform: rotateX(70deg) rotateZ(-360deg) translateZ(0);
}
}
@keyframes self-rotate {
0% {
filter: hue-rotate(0deg);
transform: rotateX(-90deg) rotateY(360deg) rotateZ(0deg);
}
100% {
filter: hue-rotate(360deg);
transform: rotateX(-90deg) rotateY(0deg) rotateZ(0deg);
}
}
.planet1 {
position: absolute;
top: 65px;
right: 65px;
background: rgba(49, 125, 210, alpha0.8);
}
.planet2 {
position: absolute;
bottom: 65px;
right: 65px;
background: rgba(49, 125, 210, alpha0.8);
}
.planet3 {
position: absolute;
top: 65px;
left: 65px;
background: rgba(49, 125, 210, alpha0.8);
}
.planet4 {
position: absolute;
bottom: 65px;
left: 65px;
background: rgba(49, 125, 210, alpha0.8);
}