css3实现立方体的旋转功能

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        #box{
                width:200px;
                height:200px;
                 margin:100px auto;
                 transform:perspective(800px) rotateY(0deg)  rotateX(0deg);
                 transform-style: preserve-3d;
             }
        #box div{
                        position: absolute;
                        top:0;
                        left:0;
                        width:200px;
                        height:200px;
                    }
         #box .face{
                        background: yellow;
                        transform:translateZ(100px);
                    }
         #box .back{
                       background: #996;
                       transform:translateZ(-100px);
                   }
        #box .top{
                        background: #234;
                        transform:translateY(-100px) rotateX(-90deg);
                    }
         #box .bottom{
                        background: green;
                        transform:translateY(100px) rotateX(-90deg);
                    }
         #box .left{
                        background: blue;
                        transform:translateX(-100px) rotateY(90deg);
                    }
        #box .right{
                       background: pink;
                       transform:translateX(100px) rotateY(90deg);
                   }
        /* #box:hover{
          transform:perspective(800px) rotateY(360deg)  rotateX(360deg);
     } */
        </style>
        <script>
        window.onload=function(){
                var oBox=document.getElementById('box');
                var bLeft=false;
                var bRight=false;
                var bTop=false;
                var bBottom=false;
                //初始值
                var x=0; //x轴旋转角度
                var y=0;//y轴旋转角度
                //键盘
                /*document.onkeydown=function(ev){
                     //打开开关
                     switch(ev.keyCode){
                         case 37:
                             bLeft=true;
                             break;
                         case 38:
                             bTop=true;
                             break;
                         case 39:
                             bRight=true;
                             break;
                         case 40:
                             bBottom=true;
                             break;
                     }
                 };
                 document.onkeyup=function(ev){
                     //打开开关
                     switch(ev.keyCode){
                         case 37:
                             bLeft=false;
                             break;
                         case 38:
                             bTop=false;
                             break;
                         case 39:
                             bRight=false;
                             break;
                         case 40:
                             bBottom=false;
                             break;
                     }
                 };

                 setInterval(function(){
                     if(bLeft){
                         y-=4;
                     }
                     if(bBottom){
                          x-=4;
                      }
                      if(bTop){
                          x+=4;
                      }
                      if(bRight){
                          y+=4;
                      }
                      oBox.style.transform='perspective(800px) rotateY('+y+'deg) rotateX('+x+'deg)'
                 },30)*/
                //鼠标
                document.onmousedown=function(ev){
                        var disX=ev.clientX-y;
                        var disY=ev.clientY-x;
                        document.onmousemove=function(ev){
                                x=disY-ev.clientY;
                                y=ev.clientX-disX;
                                oBox.style.transform='perspective(800px) rotateY('+y+'deg) rotateX('+x+'deg)'
                             };
                     document.onmouseup=function(){
                                 document.onmouseup=null;
                                 document.onmousemove=null;
                            };
                         return false;
                     };
            };
         </script>
     </head>
<body>
<div id="box">
    <div class="face"></div>
    <div class="back"></div>
    <div class="top"></div>
    <div class="bottom"></div>
    <div class="left"></div>
    <div class="right"></div>
</div>
 </body>
 </html>

 

posted @ 2016-10-30 22:07  Jason齐齐  阅读(445)  评论(0编辑  收藏  举报