JSFiddle - React, Tailwind, and code Playground
HTML
<div class="loading">
<div class="preloader">
<div class="scene">
<div class="plane">
<div class="cube cube--0">
<div class="cube__side"></div>
<div class="cube__side"></div>
<div class="cube__side"></div>
<div class="cube__side"></div>
<div class="cube__side"></div>
<div class="cube__side"></div>
</div>
<div class="shadow shadow--0"></div>
<div class="cube cube--1">
<div class="cube__side"></div>
<div class="cube__side"></div>
<div class="cube__side"></div>
<div class="cube__side"></div>
<div class="cube__side"></div>
<div class="cube__side"></div>
</div>
<div class="shadow shadow--1"></div>
<div class="cube cube--2">
<div class="cube__side"></div>
<div class="cube__side"></div>
<div class="cube__side"></div>
<div class="cube__side"></div>
<div class="cube__side"></div>
<div class="cube__side"></div>
</div>
<div class="shadow shadow--2"></div>
<div class="cube cube--3">
<div class="cube__side"></div>
<div class="cube__side"></div>
<div class="cube__side"></div>
<div class="cube__side"></div>
<div class="cube__side"></div>
<div class="cube__side"></div>
</div>
<div class="shadow shadow--3"></div>
<div class="cube cube--4">
<div class="cube__side"></div>
<div class="cube__side"></div>
<div class="cube__side"></div>
<div class="cube__side"></div>
<div class="cube__side"></div>
<div class="cube__side"></div>
</div>
<div class="shadow shadow--4"></div>
<div class="cube cube--5">
<div class="cube__side"></div>
<div class="cube__side"></div>
<div class="cube__side"></div>
<div...
CSS
/* loader start */
:root {
--hue: 185;
--radius: 5.5;
--size: 1;
}
.loading {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 99999;
}
.isBlur {
filter: blur(5px);
}
.scene {
perspective: 800px;
transform-style: preserve-3d;
height: 100vh;
width: 100vw;
display: flex;
align-items: center;
justify-content: center;
}
.plane {
height: 5vmin;
width: 5vmin;
transform-style: preserve-3d;
transform: rotateX(-40deg) rotateY(-45deg) rotateX(90deg);
}
.cube,
.shadow {
--width: var(--size);
--height: var(--size);
--depth: var(--size);
height: calc(var(--depth) * 1vmin);
width: calc(var(--width) * 1vmin);
transform-style: preserve-3d;
position: absolute;
font-size: 1rem;
animation: jump 0.8s calc(var(--d) * 1s) infinite;
transform: translate3d(calc((var(--x) * var(--radius)) * 1vmin), calc((var(--y) * var(--radius)) * -1vmin), 0);
}
.cube>div:nth-of-type(1),
.shadow>div:nth-of-type(1) {
background: hsl(var(--hue), 60%, 50%);
height: calc(var(--height) * 1vmin);
width: 100%;
transform-origin: 50% 50%;
transform: rotateX(-90deg);
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%) rotateX(-90deg) translate3d(0, 0, calc((var(--depth) / 2) * 1vmin));
}
.cube>div:nth-of-type(2),
.shadow>div:nth-of-type(2) {
background: hsl(var(--hue), 60%, 60%);
height: calc(var(--height) * 1vmin);
width: 100%;
transform-origin: 50% 50%;
transform: translate(-50%, -50%) rotateX(-90deg) rotateY(180deg) translate3d(0, 0, calc((var(--depth) / 2) * 1vmin));
position: absolute;
top: 50%;
left: 50%;
}
.cube>div:nth-of-type(3),
.shadow>div:nth-of-type(3) {
background: hsl(var(--hue), 60%, 60%);
height: calc(var(--height) * 1vmin);
width: calc(var(--depth) * 1vmin);
transform: translate(-50%, -50%) rotateX(-90deg) rotateY(90deg) translate3d(0, 0, calc((var(--width) / 2) * 1vmin));
position: absolute;
top: 50%;
left:...