Cube Side Rotation
A recreation of http://25.media.tumblr.com/e2fef4a37581ff9af693c58c11c95207/tumblrmub9f4XmAH1sso6sco1400.gif using CSS
Check out http://dailycube.tumblr.com/ for more awesome cube animations
<div id="container">
<div id="container">
<div id="cube">
<div class="back"></div>
<div class="left"></div>
<div class="bottom"></div>
<div class="top"></div>
<div class="right"></div>
<div class="front"></div>
</div>
</div>
/* Use a find a replace tool to change the dimensions */
/* Use a find a replace tool to change the dimensions */
body { background-color:black; }
#container { width:100%; perspective:800px; perspective:800px; position:relative; }
#cube {
position:relative; margin:0 auto; top:170px; width:200px; height:200px;
transform-style: preserve-3d;
transform-style: preserve-3d;
transform: rotateX(-5deg) rotateY(-30deg);
transform: rotateX(-5deg) rotateY(-30deg);
}
#cube > div {
position:absolute; width:200px; height:200px;
border:1px solid white;
/*background:red; /* Remove the first /* to see the trick */
}
#cube .front {
transform: translateZ(100px);
transform: translateZ(100px);
animation:front 5s linear infinite;
animation:front 5s linear infinite;
}
#cube .back {
transform: rotateY(180deg) translateZ(100px);
transform: rotateY(180deg) translateZ(100px);
animation:back 5s linear infinite;
animation:back 5s linear infinite;
}
#cube .right {
transform: rotateY(90deg) translateZ(100px);
transform: rotateY(90deg) translateZ(100px);
animation:right 5s linear infinite;
animation:right 5s linear infinite;
}
#cube .left {
transform: rotateY(270deg) translateZ(100px);
transform: rotateY(270deg) translateZ(100px);
animation:left 5s linear infinite;
animation:left 5s linear infinite;
}
#cube .top {
transform: rotateX(90deg) translateZ(100px);
transform: rotateX(90deg) translateZ(100px);
animation:top 5s linear infinite;
animation:top 5s linear infinite;
}
#cube .bottom {
transform: rotateX(270deg) rotateY(0deg) translateZ(100px);
transform: rotateX(270deg) rotateY(0deg) translateZ(100px);
animation:bottom 5s linear infinite;
animation:bottom 5s linear infinite;
}
@keyframes front {
50% { transform:rotateY(-180deg) translateZ(-100px); opacity:1; }
50.001% { opacity:0; }
99.999% { opacity:0; }
100% { opacity:1; }
}
@keyframes back {
25% { transform:rotateY(90deg) translateX(100px) translateZ(-50px); }
50% { transform:rotateY(0deg) translateZ(-100px); opacity:1; }
50.001% { opacity:0; }
99.999% { opacity:0; }
100% { opacity:1; }
}
@keyframes right {
25% { transform: rotateY(0deg) translateZ(-50px) translateX(100px); }
50% { transform: rotateY(-90deg) translateZ(-100px); }
50.001% { transform: rotateY(90deg) translateZ(100px); }
100% { transform: rotateY(90deg) rotateX(-180deg) translateZ(-100px); }
}
@keyframes left {
25% { transform: rotateY(180deg) translateZ(-50px) translateX(100px); }
50% { transform: rotateY(90deg) translateZ(-100px); }
50.001% { transform: rotateY(270deg) translateZ(100px); }
100% { transform: rotateY(270deg) rotateX(180deg) translateZ(-100px); }
}
@keyframes top {
0% { opacity:0; }
49.999% { opacity:0; }
50% { transform: rotateX(90deg) translateZ(100px); opacity:1; }
100% { transform: rotateX(90deg) rotateY(180deg) translateZ(-100px); }
}
@keyframes bottom {
0% { opacity:0; }
49.999% { opacity:0; }
50% { transform: rotateX(270deg) rotateY(0deg) translateZ(100px); opacity:1; }
75% { transform: rotateX(270deg) rotateY(-90deg) translateX(100px) translateZ(-50px); }
100% { transform: rotateX(270deg) rotateY(-180deg) translateZ(-100px); }
}
@-webkit-keyframes front {
50% { transform:rotateY(-180deg) translateZ(-100px); opacity:1; }
50.001% { opacity:0; }
99.999% { opacity:0; }
100% { opacity:1; }
}
@-webkit-keyframes back {
25% { transform:rotateY(90deg) translateX(100px) translateZ(-50px); }
50% { transform:rotateY(0deg) translateZ(-100px); opacity:1; }
50.001% { opacity:0; }
99.999% { opacity:0; }
100% { opacity:1; }
}
@-webkit-keyframes right {
25% { transform: rotateY(0deg) translateZ(-50px) translateX(100px); }
50% { transform: rotateY(-90deg) translateZ(-100px); }
50.001% { transform: rotateY(90deg) translateZ(100px); }
100% { transform: rotateY(90deg) rotateX(-180deg) translateZ(-100px); }
}
@-webkit-keyframes left {
25% { transform: rotateY(180deg) translateZ(-50px) translateX(100px); }
50% { transform: rotateY(90deg) translateZ(-100px); }
50.001% { transform: rotateY(270deg) translateZ(100px); }
100% { transform: rotateY(270deg) rotateX(180deg) translateZ(-100px); }
}
@-webkit-keyframes top {
0% { opacity:0; }
49.999% { opacity:0; }
50% { transform: rotateX(90deg) translateZ(100px); opacity:1; }
100% { transform: rotateX(90deg) rotateY(180deg) translateZ(-100px); }
}
@-webkit-keyframes bottom {
0% { opacity:0; }
49.999% { opacity:0; }
50% { transform: rotateX(270deg) rotateY(0deg) translateZ(100px); opacity:1; }
75% { transform: rotateX(270deg) rotateY(-90deg) translateX(100px) translateZ(-50px); }
100% { transform: rotateX(270deg) rotateY(-180deg) translateZ(-100px); }
}