SOURCE

console 命令行工具 X clear

                    
>
console
$(function () {
     //initialize
     $('.container').css({
         'perspective-origin': '50% 0%',
         '-webkit-perspective-origin': '50% 0%'
     });
     $('.container .example').css({
         'animation': 'topleave 400ms forwards',
         '-webkit-animation': 'topleave 400ms forwards'
     });

     $('.container').bind('mouseenter mouseleave', function (e) {
         var dir = getDirection($(this), e),
             enter = e.type === 'mouseenter',
             topPerspectiveOrigin = {
                 'perspective-origin': '50% 0%',
                 '-webkit-perspective-origin': '50% 0%'
             },
             rightPerspectiveOrigin = {
                 'perspective-origin': '100% 50%',
                 '-webkit-perspective-origin': '100% 50%'
             },
             bottomPerspectiveOrigin = {
                 'perspective-origin': '50% 100%',
                 '-webkit-perspective-origin': '50% 100%'
             },
             leftPerspectiveOrigin = {
                 'perspective-origin': '0% 50%',
                 '-webkit-perspective-origin': '0% 50%'
             },
             $target = $(this).find('.example');
         switch (dir) {
             case 0:
                 if (enter) {
                     $(this).css(topPerspectiveOrigin);
                     $target.css({
                         'animation': 'topenter 400ms forwards',
                         '-webkit-animation': 'topenter 400ms forwards'
                     });
                 } else {
                     $(this).css(topPerspectiveOrigin);
                     $target.css({
                         'animation': 'topleave 400ms forwards',
                         '-webkit-animation': 'topleave 400ms forwards'
                     });
                 };
                 break;
             case 1:
                 if (enter) {
                     $(this).css(rightPerspectiveOrigin);
                     $target.css({
                         'animation': 'rightenter 400ms forwards',
                         '-webkit-animation': 'rightenter 400ms forwards'
                     });
                 } else {
                     $(this).css(rightPerspectiveOrigin);
                     $target.css({
                         'animation': 'rightleave 400ms forwards',
                         '-webkit-animation': 'rightleave 400ms forwards'
                     });
                 };
                 break;
             case 2:
                 if (enter) {
                     $(this).css(bottomPerspectiveOrigin);
                     $target.css({
                         'animation': 'bottomenter 400ms forwards',
                         '-webkit-animation': 'bottomenter 400ms forwards'
                     });
                 } else {
                     $(this).css(bottomPerspectiveOrigin);
                     $target.css({
                         'animation': 'bottomleave 400ms forwards',
                         '-webkit-animation': 'bottomleave 400ms forwards'
                     });
                 };
                 break;
             case 3:
                 if (enter) {
                     $(this).css(leftPerspectiveOrigin);
                     $target.css({
                         'animation': 'leftenter 400ms forwards',
                         '-webkit-animation': 'leftenter 400ms forwards'
                     });
                 } else {
                     $(this).css(leftPerspectiveOrigin);
                     $target.css({
                         'animation': 'leftleave 400ms forwards',
                         '-webkit-animation': 'leftleave 400ms forwards'
                     });
                 };
                 break;
         }

     });
 })

 function getDirection($element, event) {
     var w = $element.width(),
         h = $element.height(),
         x = (event.pageX - $element.offset().left - (w / 2)) * (w > h ? (h / w) : 1),
         y = (event.pageY - $element.offset().top - (h / 2)) * (h > w ? (w / h) : 1),
         direction = Math.round((((Math.atan2(y, x) * (180 / Math.PI)) + 180) / 90) + 3) % 4;
     return direction;
 }
<script id="jquery_183" type="text/javascript" class="library" src="http://sandbox.runjs.cn/js/sandbox/jquery/jquery-1.8.3.min.js"></script>
		<p>Author: <a href="http://wayouliu.duapp.com/" target="_blank">Wayou</a></p>
<p>there's also a jQuery plugin written by me to do this support 2d/3d animation, for more infomation see <a href="http://wayou.github.io/SlipHover/" target="_blank">here</a>.
<div id="wrapper">
            <ul>
                <li>
                    <div class="container">
                        <div class="example">Hello World!</div>
                    </div>
                </li>
                 <li>
                    <div class="container">
                        <div class="example">Hello World!</div>
                    </div>
                </li>
                 <li>
                    <div class="container">
                        <div class="example">Hello World!</div>
                    </div>
                </li>
                 <li>
                    <div class="container">
                        <div class="example">Hello World!</div>
                    </div>
                </li>
                 <li>
                    <div class="container">
                        <div class="example">Hello World!</div>
                    </div>
                </li>
                 <li>
                    <div class="container">
                        <div class="example">Hello World!</div>
                    </div>
                </li>
							<li>
                    <div class="container">
                        <div class="example">Hello World!</div>
                    </div>
                </li>
                 <li>
                    <div class="container">
                        <div class="example">Hello World!</div>
                    </div>
                </li>
                 <li>
                    <div class="container">
                        <div class="example">Hello World!</div>
                    </div>
                </li>
            </ul>
        </div>
html{
	font-family:arial;
	color:#aaa;
}
body{
	background-color:#2C3437;
}

a{
	color:#5555ff;
}

ul{
	width: 500px;
}
li{
	display: inline-block;
	list-style: none;
	margin: 2px 0;
}
.container{
	text-align:center;
	perspective:500px;
	-webkit-perspective:500px;
	border: 1px solid;
}
.example{
	display:table-cell;
	vertical-align:middle;
	color: #fff;
	width: 150px;
	height: 150px;
	background-color: #9c0000;
}

@-webkit-keyframes topenter {
    from {
        -webkit-transform-origin:top;
        -webkit-transform:rotateX(-90deg);
    }
    to {
        -webkit-transform-origin:top;
        -webkit-transform:rotateX(0deg);
    }
}
@keyframes topenter {
    from {
        transform-origin:top;
        transform:rotateX(-90deg);
    }
    to {
        transform-origin:top;
        transform:rotateX(0deg);
    }
}
@-webkit-keyframes topleave {
    from {
        -webkit-transform-origin:top;
        -webkit-transform:rotateX(0deg);
    }
    to {
        -webkit-transform-origin:top;
        -webkit-transform:rotateX(-90deg);
    }
}
@keyframes topleave {
    from {
        transform-origin:top;
        transform:rotateX(0deg);
    }
    to {
        transform-origin:top;
        transform:rotateX(-90deg);
    }
}
@-webkit-keyframes bottomenter {
    from {
        -webkit-transform-origin:bottom;
        -webkit-transform:rotateX(90deg);
    }
    to {
        -webkit-transform-origin:bottom;
        -webkit-transform:rotateX(0deg);
    }
}
@keyframes bottomenter {
    from {
        transform-origin:bottom;
        transform:rotateX(90deg);
    }
    to {
        transform-origin:bottom;
        transform:rotateX(0deg);
    }
}
@-webkit-keyframes bottomleave {
    from {
        -webkit-transform-origin:bottom;
        -webkit-transform:rotateX(0deg);
    }
    to {
        -webkit-transform-origin:bottom;
        -webkit-transform:rotateX(90deg);
    }
}
@keyframes bottomleave {
    from {
        transform-origin:bottom;
        transform:rotateX(0deg);
    }
    to {
        transform-origin:bottom;
        transform:rotateX(90deg);
    }
}
@-webkit-keyframes leftenter {
    from {
        -webkit-transform-origin:left;
        -webkit-transform:rotateY(90deg);
    }
    to {
        -webkit-transform-origin:left;
        -webkit-transform:rotateY(0deg);
    }
}
@keyframes leftenter {
    from {
        transform-origin:left;
        transform:rotateY(90deg);
    }
    to {
        transform-origin:left;
        transform:rotateY(0deg);
    }
}
@-webkit-keyframes leftleave {
    from {
        -webkit-transform-origin:left;
        -webkit-transform:rotateY(0deg);
    }
    to {
        -webkit-transform-origin:left;
        -webkit-transform:rotateY(90deg);
    }
}
@keyframes leftleave {
    from {
        transform-origin:left;
        transform:rotateY(0deg);
    }
    to {
        transform-origin:left;
        transform:rotateY(90deg);
    }
}
@-webkit-keyframes rightenter {
    from {
        -webkit-transform-origin:right;
        -webkit-transform:rotateY(-90deg);
    }
    to {
        -webkit-transform-origin:right;
        -webkit-transform:rotateY(0deg);
    }
}
@keyframes rightenter {
    from {
        transform-origin:right;
        transform:rotateY(-90deg);
    }
    to {
        transform-origin:right;
        transform:rotateY(0deg);
    }
}
@-webkit-keyframes rightleave {
    from {
        -webkit-transform-origin:right;
        -webkit-transform:rotateY(0deg);
    }
    to {
        -webkit-transform-origin:right;
        -webkit-transform:rotateY(-90deg);
    }
}
@keyframes rightleave {
    from {
        transform-origin:right;
        transform:rotateY(0deg);
    }
    to {
        transform-origin:right;
        transform:rotateY(-90deg);
    }
}