JSFiddle - React, Tailwind, and code Playground
HTML
<div class="container">
<div class="stage">
<div class="cube">
<div class="face faceZ front">front</div>
<div class="face faceZ back">back</div>
<div class="face faceX left">left</div>
<div class="face faceX right">right</div>
<div class="face faceY top">top</div>
<div class="face faceY bottom">bottom</div>
</div>
</div>
</div>
CSS
/* Set the size of the sides of the box here */
.container {
--sideX: 400px;
--sideY: 300px;
--sideZ: 200px;
}
/* Common properties for all faces: position absolute */
.face {
position: absolute;
}
.cube {
transform-style: preserve-3d;
width: var(--sideX);
height: var(--sideY);
}
.stage {
transform: translateZ(calc(var(--sideZ) / -2));
transform-style: preserve-3d;
}
.container {
outline: solid 1px red;
width: var(--sideX);
height: var(--sideY);
margin: 50px auto 0 auto;
/* Set perspective */
perspective: 800px;
}
/* Define a size for the pairs of faces: */
/* "X-faces": left and right */
.faceX { width: var(--sideZ); height: var(--sideY); line-height: var(--sideY); }
/* "Y-faces": top and bottom */
.faceY { width: var(--sideX); height: var(--sideZ); line-height: var(--sideZ); }
/* "Z-faces": front and back */
.faceZ { width: var(--sideX); height: var(--sideY); line-height: var(--sideY); }
/* And rotation/translation for each individual face: */
.face.front { transform: rotateY(0deg) translateZ(calc(var(--sideZ) / 2)); }
.face.back { transform: rotateY(180deg) translateZ(calc(var(--sideZ) / 2)); }
.face.left { transform: rotateY(-90deg) translateZ(calc(var(--sideZ) / 2)); }
.face.right { transform: rotateY(90deg) translateZ(calc(var(--sideX) - var(--sideZ) / 2)); }
.face.top { transform: rotateX(90deg) translateZ(calc(var(--sideZ) / 2)); }
.face.bottom { transform: rotateX(-90deg) translateZ(calc(var(--sideY) - var(--sideZ) / 2)); }
.front { background-color: rgba(255, 0, 0, 0.5); }
.back { background-color: rgba(0, 255, 0, 0.5); }
.left { background-color: rgba(0, 0, 255, 0.5); }
.right { background-color: rgba(0, 255, 255, 0.5); }
.top { background-color: rgba(255, 0, 255, 0.5); }
.bottom { background-color: rgba(255, 255, 0, 0.5); }
/* Show the "base plane" */
.cube { outline: solid 1px black; /* background-color: rgba(0, 0, 0, 0.5); */ }
.face { color: white; text-align: center; font-size: 50px; }
/* Define an...