Introduction
A couple days ago I stumbled upon the insanely creative one page portfolio site FixedAgency. I instantly fell in love with the unique animations and feel of the website that I almost missed the beautiful sidebar menu. It has a sleek 3D cube rotation effect on each link in the menu. Basically, on hover the link is supposed to look like a 3D cube that rotates 90 degrees. This is achieved with CSS3 Transform Matrix 3D
HTML structure
Here is the general HTML structure for the sidebar. Each animated link is encompassed within a link anchor tag. Then the original state and the hovered state are represented by 2 span classes. The nested span classes are simply to create the vertical text look.
<div class="navbar">
<a class="menu" href="#"><i class="icon-align-justify"></i></a>
<a class="link" href="#">
<span class="active"><span class="valign"><span class="vertical">HOVER</span></span></span>
<span class="hover"><span class="valign"><span class="vertical">HOVER</span></span></span>
</a>
<a class="link" href="#">
<span class="active"><span class="valign"><span class="vertical">HOVER</span></span></span>
<span class="hover"><span class="valign"><span class="vertical">HOVER</span></span></span>
</a>
<a class="link" href="#">
<span class="active"><span class="valign"><span class="vertical">HOVER</span></span></span>
<span class="hover"><span class="valign"><span class="vertical">HOVER</span></span></span>
</a>
</div>
CSS Effects
Here is the css for the menu. Don’t forget to add the transform-origin on the links you want to animate with matrix3d. Next using transitions I just alternate between the active and hover states on hover which creates the desired animation.
.navbar a.link span.active,
.navbar a.link span.hover {
display: table;
position: absolute;
width: 100%;
height: 100%;
transform-origin: 0% 50% 0px;
-webkit-transform-origin: 0% 50% 0px;
transition: .2s;
-webkit-transition: .2s;
border-bottom: 1px solid #555;
}
.navbar a.link span.active {
transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);
-webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);
left: 0;
background-color: #444;
}
.navbar a.link:hover span.active {
background-color: #999;
transform: matrix3d(0, 0, 1, 0, 0, 1, 0, 0, -1, 0, 0, 0, -50, 0, 0, 1);
-webkit-transform: matrix3d(0, 0, 1, 0, 0, 1, 0, 0, -1, 0, 0, 0, -50, 0, 0, 1);
}
.navbar a.link span.active .vertical { color: #aaa;
}
.navbar a.link span.hover {
transform: matrix3d(0, 0, -1, 0.00166, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1);
-webkit-transform: matrix3d(0, 0, -1, 0.00166, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1);
left: 100%;
background-color: #ccc;
}
.navbar a.link:hover span.hover {
transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.00166, -50, 0, 0, 1);
-webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.00166, -50, 0, 0, 1);
}
The post 3D Cube Rotate Menu appeared first on webdesigncrowd.com.