%ul.cubes
- (1..64).each do |i|
%li.cube
- (1..6).each do |j|
%div.face
@import compass
$m: 8
$side: 2em
$factor: 20
$faces: 6
html
height: 100%
perspective: $factor*$side
background: black
.cubes
position: absolute
top: 50%
left: 50%
margin: -$m*$side/2
padding: 0
width: $m*$side
transform-style: preserve-3d
transform: rotateX(60deg) rotateZ(45deg)
list-style: none
.cube
float: left
position: relative
width: $side
height: $side
transform-style: preserve-3d
opacity: .8
transition: transform 1.5s ease-in
cursor: pointer
&:hover
transform: translateZ(.95*$side)
transition: transform .5s ease-out
.face
position: absolute
width: inherit
height: inherit
box-shadow: 0 0 0 1px black
@for $k from 1 to 7
&:nth-child(#{$k})
@if $k < 5
transform: rotateY(#{($k - 1)*90}deg) translateZ($side/2)
@else
transform: rotateX(#{($k - 5)*180 - 90}deg) translateZ($side/2)
@for $i from 1 to 9
@for $j from 1 to 9
&:nth-child(#{($i - 1)*$m + $m - $j + 1}) .face
background: rgb(0, ($i + $j - 2)*255/(2*$m), 255 - ($i + $j - 2)*255/$m/2)
/*
No JS here, just a comment. Simply hover the cubes. :)
Works in browsers that support 3D transforms and nesting 3D transformed elements - see http://caniuse.com/#feat=transforms3d
*/
Also see: Tab Triggers