JSFiddle - React, Tailwind, and code Playground
by phloe
HTML
<div class="container">
<div class="box outer outer--left"></div>
<div class="box outer outer--right"></div>
<div class="box inner inner--left"></div>
<div class="box inner inner--right"></div>
</div>
CSS
body {
background-color: #000;
}
.container {
position: relative;
width: 100px;
height: 100px;
transform: rotate3d(.25, 1, 0, 45deg);
perspective: 300px;
animation: rotate 2s linear infinite;
}
.box, .box::before, .box::after {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
.box::before, .box::after {
content: "";
display: block;
background-color: inherit;
transform-origin: 0 0;
transform: rotateY(90deg);
}
.box::after {
transform-origin: 100% 0;
transform: rotateY(-90deg);
}
.outer {
background-color: #FFF;
transform: translateZ(-50px);
}
.outer--right {
transform: translateZ(-50px) rotateY(180deg);
}
.inner {
background-color: #000;
transform: scale(0.9) translateZ(-50px);
}
.inner--right {
transform: scale(0.9) translateZ(-50px) rotateY(180deg);
}
@keyframes rotate {
0 {
transform: rotate3d(.25, 1, 0, 45deg);
}
100% {
transform: rotate3d(.25, 1, 0, 405deg);
}
}