JSFiddle - React, Tailwind, and code Playground
HTML
<div class="container">
<div class="rotor">
<div class="face front">
<pre>transform-origin: center center 0;</pre>
</div>
<div class="face top"></div>
<div class="face back"></div>
<div class="face bottom"></div>
</div>
</div>
<div class="container">
<div class="rotor prism">
<div class="face front">
<pre>transform-origin: center center -25px;</pre>
</div>
<div class="face top"></div>
<div class="face back"></div>
<div class="face bottom"></div>
</div>
</div>
CSS
.container {
margin: 50px;
border: 2px solid #00f;
height: 50px;
-webkit-perspective: 500px;
-moz-perspective: 500px;
perspective: 500px;
position: relative;
}
.rotor {
-webkit-transform-style: preserve-3d;
-moz-transform-style: preserve-3d;
transform-style: preserve-3d;
-webkit-animation: spin 4s infinite linear;
-moz-animation: spin 4s infinite linear;
animation: spin 4s infinite linear;
}
.face {
-webkit-backface-visibility: hidden;
-moz-backface-visibility: hidden;
backface-visibility: hidden;
}
.rotor, .face {
position: absolute;
top: 0; right: 0; bottom: 0; left: 0;
}
.prism, .prism .face {
-webkit-transform-origin: center center -25px;
-moz-transform-origin: center center -25px;
transform-origin: center center -25px;
}
.face.front {
background-color: rgba(255,0,0,0.5);
-webkit-transform: rotateX(0deg);
-moz-transform: rotateX(0deg);
transform: rotateX(0deg);
}
.face.bottom {
background-color: rgba(0,0,255,0.5);
-webkit-transform: rotateX(90deg);
-moz-transform: rotateX(90deg);
transform: rotateX(90deg);
}
.face.back {
background-color: rgba(0,255,255,0.5);
-webkit-transform: rotateX(180deg);
-moz-transform: rotateX(180deg);
transform: rotateX(180deg);
}
.face.top {
background-color: rgba(0,255,0,0.5);
-webkit-transform: rotateX(270deg);
-moz-transform: rotateX(270deg);
transform: rotateX(270deg);
}
pre {
margin: 10px;
}
@-webkit-keyframes spin {
from { -webkit-transform: rotateX(0); }
50% { -webkit-transform: rotateX(0); }
to { -webkit-transform: rotateX(360deg); }
}
@-moz-keyframes spin {
from { -moz-transform: rotateX(0); }
50% { -moz-transform: rotateX(0); }
to { -moz-transform: rotateX(360deg); }
}
@keyframes spin {
from { transform: rotateX(0); }
50% { transform: rotateX(0); }
to { transform: rotateX(360deg); }
}