JSFiddle - React, Tailwind, and code Playground

by kougiland

HTML

<div class="scene">
    <div class="box">
        <div class="side_1"></div>
        <div class="side_2"></div>
        <div class="side_3"></div>
        <div class="side_4"></div>
        <div class="side_5"></div>
        <div class="side_6"></div>
    </div>
    <div class="box">
        <div class="side_1"></div>
        <div class="side_2"></div>
        <div class="side_3"></div>
        <div class="side_4"></div>
        <div class="side_5"></div>
        <div class="side_6"></div>
    </div>
    <div class="box">
        <div class="side_1"></div>
        <div class="side_2"></div>
        <div class="side_3"></div>
        <div class="side_4"></div>
        <div class="side_5"></div>
        <div class="side_6"></div>
    </div>
    <div class="box">
        <div class="side_1"></div>
        <div class="side_2"></div>
        <div class="side_3"></div>
        <div class="side_4"></div>
        <div class="side_5"></div>
        <div class="side_6"></div>
    </div>
</div>

CSS

body {
    -webkit-perspective: 1000;
    -webkit-perspective-origin: 50% 50%;
    -webkit-transform-style: preserve-3d;
}
.scene {

    -webkit-animation: spin 15s infinite linear;
    -webkit-transform-style: preserve-3d;
    width: 100%;
    height: 100%;
    margin: 80px auto;
    position: absolute;
    -webkit-transform: rotate3d(0, 1, 0, 0deg);
}

.box {
    width: 150px;
    height: 180px; 
    position: absolute;
    -webkit-transform-style: preserve-3d;  
    top: 40px; 
}
.box div {
    width: 150px;
    height: 180px;
    opacity: 0.75;
    background-color: #bada55;
    position: absolute;  
}
.box .side_1   { 
    -webkit-transform: rotate3d(0,1,0, 0 ) translate3d(0, 0, 75px );     
    background-color: #FF0;
}
.box .side_2   { 
    -webkit-transform: rotate3d(1,0,0, 180deg ) translate3d(0, 0, 75px ); 
    background-color: #F00;
}
.box .side_3   { 
    -webkit-transform: rotate3d(0,1,0, 90deg ) translate3d(0, 0, 75px );    
    background-color: #CCC; }
.box .side_4   {
    -webkit-transform: rotate3d(0,1,0, -90deg ) translate3d(0, 0, 75px ); 
    background-color: #000;
}
.box .side_5   { 
    height: 150px;
    width: 150px;
    background-color: #00a2ff;
    -webkit-transform: rotate3d(1,0,0, 90deg ) translate3d(0, 0, 75px ); }
.box .side_6   { 
    height: 150px;
    background-color: #00a2ff;
    width: 150px;
    -webkit-transform: rotate3d(1,0,0, -90deg ) translate3d(0, 0, 105px ); }
.box:first-child {
    position: absolute;
    top: 40px;
}
.box:last-child {
    right: 0;
}
.box:nth-child(2) {
    background: url(../img/dot.jpg) repeat-y center center transparent;
    -webkit-transform: translateZ( -600px );
    left: 480px;
}
.box:nth-child(3) {
    background: url(../img/dot.jpg) repeat-y center center transparent;
    -webkit-transform: translateZ( 600px );
    left: 480px;
}

@-webkit-keyframes spin {
    0%   { -webkit-transform: rotate3d(0, 1, 0, 0deg); }    
    100%   { -webkit-transform: rotate3d(0, 1, 0, 360deg); }
}