JSFiddle - React, Tailwind, and code Playground
HTML
<div id="cube">
<div id="face1" class="allSides face">face1</div>
<div id="sideLeft" class="allSides side">sideLeft</div>
<div id="face2" class="allSides face">face2</div>
<div id="sideRight" class="allSides side">sideRight</div>
</div>
CSS
* {color: white;}
#cube{
width: 198px;
height: 198px;
margin: 100px;
-ms-perspective: 1000px;
-moz-perspective: 1000px;
}
.allSides {
width: 200px;
height: 200px;
position: absolute;
-ms-backface-visibility: hidden;
-moz-backface-visibility: hidden;
}
.face {
width: 200px;
height: 200px;
}
.side {
width: 50px;
height: 200px;
background-color: #999999;
}
#face1
{
background-color:blue;
-ms-transform: rotateY(0deg) perspective(1000px) translateZ(100px);
-moz-transform: rotateY(0deg) translateZ(100px);
-ms-transition: -ms-transform .5s linear;
-moz-transition: -moz-transform .5s linear;
}
#cube:hover #face1 {
-ms-transform: rotateY(180deg) perspective(1000px) translateZ(100px);
-moz-transform: rotateY(180deg) translateZ(100px);
}
#sideLeft {
-ms-transform: rotateY(-90deg) perspective(1000px) translateZ(100px);
-moz-transform: rotateY(-90deg) translateZ(100px);
-ms-transition: -ms-transform .5s linear;
-moz-transition: -moz-transform .5s linear;
}
#cube:hover #sideLeft {
-ms-transform: rotateY(90deg) perspective(1000px) translateZ(100px);
-moz-transform: rotateY(90deg) translateZ(100px);
}
#face2
{
background-color:red;
-ms-transform: rotateY(-180deg) perspective(1000px) translateZ(100px);
-moz-transform: rotateY(-180deg) translateZ(100px);
-ms-transition: -ms-transform .5s linear;
-moz-transition: -moz-transform .5s linear;
}
#cube:hover #face2 {
-ms-transform: rotateY(0deg) perspective(1000px) translateZ(100px);
-moz-transform: rotateY(0deg) translateZ(100px);
}
#sideRight {
-ms-transform: rotateY(90deg) perspective(1000px) translateZ(100px);
-moz-transform: rotateY(90deg) translateZ(100px);
-ms-transition: -ms-transform .5s linear;
-moz-transition: -moz-transform .5s linear;
}
#cube:hover #sideRight {
-ms-transform: rotateY(90deg) perspective(1000px) translateZ(100px);
...
JavaScript
/*
var yAngleFront = 0;
var yAngleBack = yAngleFront+180;
var yAngleLeft = -90;
var yAngleRight = 90;
var leftTranslate = 25;
setInterval(function(){
yAngleFront += 5;
yAngleBack = yAngleFront+180;
yAngleLeft += 5;
yAngleRight = yAngleLeft+180;
$('#face1').css('-ms-transform','perspective(1000px) translateZ(25px) rotateY('+yAngleFront+'deg)');
$('#face1').css('-moz-transform','rotateY('+yAngleFront+'deg) translateZ(20px)');
$('#sideLeft').css('-ms-transform','perspective(1000px) translateZ(25px) rotateY('+yAngleLeft+'deg)');
$('#sideLeft').css('-moz-transform','rotateY('+yAngleLeft+'deg) translateZ(20px)');
$('#face2').css('-ms-transform','perspective(1000px) translateZ(20px) rotateY('+yAngleBack+'deg)');
$('#face2').css('-moz-transform','rotateY('+yAngleBack+'deg) translateZ(20px)');
},100);
*/