zoukankan      html  css  js  c++  java
  • js拖拽3D立方体旋转

      这段时间有点闲,所以就自己找些小玩意来练习练习。今天做了一个可以拖拽页面内空白位置3D立方体就会跟着转动的小例子,布局方面用到css3 3D转换技术,通过transform控制旋转实现的。

    上个图

    代码:

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <title>Examples</title>
    <meta name="description" content="">
    <meta name="keywords" content="">
    <link href="" rel="stylesheet">
    <style>
        *{
            padding: 0;
            margin: 0;
        }
        #experiment{
            -webkit-perspective: 800;
            -webkit-perspective-origin: 50% 50%;
        }
        #cube{
            position: relative;
            margin: 200px auto;
            width: 200px;
            height: 200px;
            -webkit-transform-style: preserve-3d;
            cursor: pointer;
        }
        .face{
            position: absolute;
            width: 160px;
            height: 160px;
            line-height: 160px;
            text-align: center;
            padding: 20px;
            font-weight: bold;
            color: #fff;
            background: #000;
            font-size: 160px;
            -webkit-transition: -webkit-transform 1s linear;
            opacity: 0.8;
        }
        .face:nth-child(2){
            -webkit-transform-origin: right;
            -webkit-transform: rotateY(-90deg);
            background: red;
        }
        .face:nth-child(3){
            -webkit-transform-origin: left;
            -webkit-transform: rotateY(90deg);
            background: yellow;
        }
        .face:nth-child(4){
            -webkit-transform-origin: top;
            -webkit-transform: rotateX(-90deg);
            background: blue;
        }
        .face:nth-child(5){
            -webkit-transform-origin: bottom;
            -webkit-transform: rotateX(90deg);
            background: green;
        }
        .face:nth-child(6){
            -webkit-transform: translateZ(-200px);
            background: gray;
        }
    </style>
    </head>
    <body>
        <div id="experiment">
            <div id="cube">
                <div class="face" id="face1"></div>
                <div class="face" id="face2"></div>
                <div class="face" id="face3"></div>
                <div class="face" id="face4"></div>
                <div class="face" id="face5"></div>
                <div class="face" id="face6"></div>
            </div>
        </div>
    
    <script>
        document.onmousedown= function(event){
            var that = document.getElementById('cube');
            var reg = /-?[0-9]+.?[0-9]*/g;
            var bf = that.style.webkitTransform || '0,0';
            var arr = bf.match(reg);
            var bfX = Number(arr[0]);
            var bfY = Number(arr[1]);
            var startX = event.pageX;
            var startY = event.pageY;
            document.onmousemove= function(event) {
                var disX = event.pageX - startX ;
                var disY = event.pageY - startY ;
                var y=(disX+bfY)%360;
                var x=(disY+bfX)%360;
                that.style.webkitTransform = "rotateX("+x+"deg) rotateY("+y+"deg) rotateZ(0deg)";
            };
    
            document.onmouseup=function(event) {
                document.onmousemove=null;
                document.onmouseup=null;
            };
            return false;
        }
    
    </script>
    </body>
    </html>
  • 相关阅读:
    把git项目放到个人服务器上
    关于fcitx无法切换输入法的问题解决
    博客变迁通知
    (欧拉回路 并查集 别犯傻逼的错了) 7:欧拉回路 OpenJudge 数据结构与算法MOOC / 第七章 图 练习题(Excercise for chapter7 graphs)
    (并查集) HDU 1856 More is better
    (并查集 不太会) HDU 1272 小希的迷宫
    (并查集 注意别再犯傻逼的错了) HDU 1213 How Many Tables
    (最小生成树 Kruskal算法) 51nod 1212 无向图最小生成树
    (并查集) HDU 1232 畅通工程
    (最小生成树 Prim) HDU 1233 还是畅通工程
  • 原文地址:https://www.cnblogs.com/JerryWang24/p/5579606.html
Copyright © 2011-2022 走看看