HTML5鼠標控制的旋轉的立方體

拖拽思路:先定義上下左右重合在一起的六個面的旋轉和移動角度
立方體效果 transform-style: preserve-3d;
定義初始值 transform: perspective(800px) rotateY(-60deg) rotateX(30deg);
其中js效果中初始值 var x = 30; var y = -60;就是初始定義的旋轉角度

    <style>
            #box{
                width: 200px;
                height: 200px;
                margin:150px auto;
                transform-style: preserve-3d;
                position: relative;
                font-size:50px;
                line-height: 200px;
                text-align: center;
                transform: perspective(800px) rotateY(-60deg) rotateX(30deg);
            }
            #box div{
                width:100%;
                height: 100%;
                position: absolute;
                left: 0;
                top: 0;
                opacity: 0.8;
            }
            .front{
                background: red;
                transform: translateZ(100px);
            }
            .back{
                background: yellow;
                transform: translateZ(-100px);
            }
            .top{
                background: blue;
                transform: translateY(-100px) rotateX(90deg);
            }
            .bottom{
                background: green;
                transform: translateY(100px) rotateX(-90deg);
            }
            .left{
                background: aqua;
                transform:translateX(-100px) rotateY(-90deg);
            }
            .right{
                background: #399;
                transform:translateX(100px) rotateY(90deg);
            }
    </style>
    <script>
        document.addEventListener('DOMContentLoaded',function(){
            var oBox = document.getElementById('box');
            var x = 30;
            var y = -60;
            document.onmousedown = function(ev){
                var oEvent = ev||event;
                var disX = oEvent.clientX - y;
                var disY = oEvent.clientY - x;
                document.onmousemove = function(ev){
                    var oEvent = ev||event;
                    x = oEvent.clientX - disX;
                    y = oEvent.clientY - disY;
                    oBox.style.WebkitTransform = 'perspective(800px) rotateY('+x+'deg) rotateX('+(-y)+'deg)';
                };
                document.onmouseup = function(){
                    document.onmousemove = null;
                    document.onmouseup = null;
                };
                return false;
            };
        },false);
    </script>
</head>
<body>
<div id="box">
    <div class="front">前面</div>
    <div class="back">后面</div>
    <div class="top">上面</div>
    <div class="bottom">下面</div>
    <div class="left">左面</div>
    <div class="right">右面</div>
</div>
</body>
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 今天天氣好晴朗處處好風光伴隨著好天氣的到來心情都更加明朗了呢是不是該學點燒腦的內容了呢傻球也要出來曬曬太陽咯~ C...
    Iris_mao閱讀 634評論 0 2
  • 看了很多視頻、文章,最后卻通通忘記了,別人的知識依舊是別人的,自己卻什么都沒獲得。此系列文章旨在加深自己的印象,因...
    DCbryant閱讀 1,895評論 0 4
  • 一、寫在前面的秋褲 早在去年的去年,我就大肆介紹了2D transform相關內容。看過海賊王的都知道,帶D的家伙...
    MrZengB閱讀 1,369評論 2 9
  • CSS里transform變形這個屬性有點學習難度,尤其在CSS3里加上了3D效果之后,2維變3維學習成本更是成倍...
    張歆琳閱讀 28,007評論 5 81
  • 文 | Raye 天將降大任于斯人也,必先苦其心志,勞其筋骨,餓其體膚,空乏其身,行拂亂其所為,所以動心忍性,曾益...
    猶抱薪火閱讀 313評論 0 0