<div class="snack">
<div class="layer layer-1"></div>
<div class="layer layer-2"></div>
<div class="layer layer-3"></div>
<div class="layer layer-4"></div>
<div class="layer layer-5"></div>
<div class="layer layer-6"></div>
<div class="layer layer-7"></div>
<div class="layer layer-8"></div>
</div>
body {
margin: 0;
min-height: 100vh;
overflow: hidden;
perspective: 1000px;
}
@keyframes spin {
0% { transform: translate(-50%, -50%) rotate3d(0, 1, 0, 60deg); }
100% { transform: translate(-50%, -50%) rotate3d(0, 1, 0, 420deg); }
}
.snack {
font-size: 1vmin;
position: absolute;
top: 50%;
left: 50%;
width: 50em;
height: 50em;
transform-style: preserve-3d;
transform: translate(-50%, -50%) rotate3d(1, 0, 0, 60deg);
aanimation: spin 50s linear infinite;
& *, & *::before, & *::after {
transform-style: preserve-3d;
}
.layer {
--color: #c96;
--width: 40%;
--scale: 1;
--translate: 0;
--darkness: 0.85;
position: absolute;
top: 50%;
left: 50%;
width: 100%;
height: 100%;
transform: translate(-50%, -50%);
border-radius: 50%;
background: radial-gradient(farthest-side, #0000 var(--width), var(--color) 0);
transform: translate(-50%, -50%) translateZ(var(--translate)) scale(var(--scale));
filter: brightness(var(--darkness));
&::before, &::after {
--acolor: red;
content: "";
position: absolute;
top: 50%;
left: 50%;
width: 100%;
height: 1em;
transform-origin: 50% 0;
transform: translate(-50%, -50%) rotate3d(1,0,0,-90deg);
background: radial-gradient(50% 1000%, #0000 var(--width), var(--color) 0);
}
&::after {
--acolor: blue;
transform: translate(-50%, -50%) rotate(90deg) rotate3d(1,0,0,-90deg);
}
&.layer-2 { --darkness: 0.875; --width: 42%; --translate: 1.0em; --scale: 0.99; }
&.layer-3 { --darkness: 0.9; --width: 48%; --translate: 2.0em; --scale: 0.97; }
&.layer-4 { --darkness: 0.925; --width: 54%; --translate: 3.0em; --scale: 0.93; }
&.layer-5 { --darkness: 0.95; --width: 64%; --translate: 4.0em; --scale: 0.88; }
&.layer-6 { --darkness: 1.00; --color: hotpink; --width: 77%; --translate: 5.0em; --scale: 0.80; }
&.layer-7 { --darkness: 0.85; --width: 42%; --translate: -1.0em; --scale: 0.99; }
&.layer-8 { --darkness: 0.80; --width: 45%; --translate: -2.0em; --scale: 0.97; &::before { content: none; }}
}
}
This Pen doesn't use any external CSS resources.
This Pen doesn't use any external JavaScript resources.