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阅读 640评论 0 2
  • 看了很多视频、文章,最后却通通忘记了,别人的知识依旧是别人的,自己却什么都没获得。此系列文章旨在加深自己的印象,因...
    DCbryant阅读 1,898评论 0 4
  • 一、写在前面的秋裤 早在去年的去年,我就大肆介绍了2D transform相关内容。看过海贼王的都知道,带D的家伙...
    MrZengB阅读 1,375评论 2 9
  • CSS里transform变形这个属性有点学习难度,尤其在CSS3里加上了3D效果之后,2维变3维学习成本更是成倍...
    张歆琳阅读 28,060评论 5 81
  • 文 | Raye 天将降大任于斯人也,必先苦其心志,劳其筋骨,饿其体肤,空乏其身,行拂乱其所为,所以动心忍性,曾益...
    犹抱薪火阅读 318评论 0 0