The key is to use the perspective
CSS3 transform property. The MDN Docs for perspective give a good definition of how this property is to be used
Perspective:
The perspective CSS property determines the distance between the z=0 plane and the user in order to give to the 3D-positioned element some perspective. Each 3D element with z>0 becomes larger; each 3D-element with z<0 becomes smaller. The strength of the effect is determined by the value of this property.
Basically, the smaller the value of perspective (i.e. the closer the viewer is perceived to be from the DOM element), the greater the effect of the transformations (e.g. rotateX
)
Here's a fiddle showing a few 3D transforms in action. You should also check out this great article which demonstrates several different transformations you can do using CSS3 3D transforms: An Introduction to CSS 3-D Transforms
Given the following HTML:
<div class="rotate-left"></div>
<div class="rotate-up"></div>
<div class="rotate-right"></div>
You want to give your element the following properties:
.rotate-left {
-webkit-transform: perspective( 500px ) rotateY( 35deg );
-moz-transform: perspective( 500px ) rotateY( 35deg );
-ms-transform: perspective( 500px ) rotateY( 35deg );
-o-transform: perspective( 500px ) rotateY( 35deg );
transform: perspective( 500px ) rotateY( 35deg );
}
.rotate-right {
-webkit-transform: perspective( 500px ) rotateY( -35deg );
-moz-transform: perspective( 500px ) rotateY( -35deg );
-ms-transform: perspective( 500px ) rotateY( -35deg );
-o-transform: perspective( 500px ) rotateY( -35deg );
transform: perspective( 500px ) rotateY( -35deg );
}
.rotate-up {
-webkit-transform: perspective( 500px ) rotateX( 35deg );
-moz-transform: perspective( 500px ) rotateX( 35deg );
-ms-transform: perspective( 500px ) rotateX( 35deg );
-o-transform: perspective( 500px ) rotateX( 35deg );
transform: perspective( 500px ) rotateX( 35deg );
}