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);
	}
}