• css3魔方(二)---魔方


    二、完成了小立方体的制作就可以制作大立方体---魔方啦。

    思路:

    1 、分为前、中、后3面

    2、每面9个小立方体

    3、鼠标按下移动,魔方相应旋转

    4、鼠标滑动某一面(每一面有6中旋转可能)【未完成!】

    5、目前只能完成整体旋转和前中后3部分旋转,要想每面都能旋转,看来要重新修改了,应该要动态判断每个小立方体的位置,

    然后旋转9个组成一面,然后旋转。 留着慢慢思考解决,待完成了再更新。

    直接上代码:

    index.html

    <!DOCTYPE html>
    <html>
    <head>
        <title>CSS魔方</title>
        <meta name="author" content="ChenLiang">
        <meta charset="utf-8">
        <script type="text/javascript" src='../static/js/jquery-3.0.0.min.js'></script>
        <link rel="stylesheet" type="text/css" href="../static/css/cube.css">
    </head>
    <body>
    <div class="stage">
        <div class="magicBox" id='MagicBox'>
            <div class="box frontBox">
                <div class="cube">
                    <div class="front style"></div>
                    <div class="back style"></div>
                    <div class="left style"></div>
                    <div class="right style"></div>
                    <div class="top style"></div>
                    <div class="bottom style"></div>
                </div>
                <div class="cube">
                    <div class="front style"></div>
                    <div class="back style"></div>
                    <div class="left style"></div>
                    <div class="right style"></div>
                    <div class="top style"></div>
                    <div class="bottom style"></div>
                </div>
                <div class="cube">
                    <div class="front style"></div>
                    <div class="back style"></div>
                    <div class="left style"></div>
                    <div class="right style"></div>
                    <div class="top style"></div>
                    <div class="bottom style"></div>
                </div>
                <div class="cube">
                    <div class="front style"></div>
                    <div class="back style"></div>
                    <div class="left style"></div>
                    <div class="right style"></div>
                    <div class="top style"></div>
                    <div class="bottom style"></div>
                </div>
                <div class="cube">
                    <div class="front style"></div>
                    <div class="back style"></div>
                    <div class="left style"></div>
                    <div class="right style"></div>
                    <div class="top style"></div>
                    <div class="bottom style"></div>
                </div>
                <div class="cube">
                    <div class="front style"></div>
                    <div class="back style"></div>
                    <div class="left style"></div>
                    <div class="right style"></div>
                    <div class="top style"></div>
                    <div class="bottom style"></div>
                </div>
                <div class="cube">
                    <div class="front style"></div>
                    <div class="back style"></div>
                    <div class="left style"></div>
                    <div class="right style"></div>
                    <div class="top style"></div>
                    <div class="bottom style"></div>
                </div>
                <div class="cube">
                    <div class="front style"></div>
                    <div class="back style"></div>
                    <div class="left style"></div>
                    <div class="right style"></div>
                    <div class="top style"></div>
                    <div class="bottom style"></div>
                </div>
                <div class="cube">
                    <div class="front style"></div>
                    <div class="back style"></div>
                    <div class="left style"></div>
                    <div class="right style"></div>
                    <div class="top style"></div>
                    <div class="bottom style"></div>
                </div>
            </div>
            <div class="box middleBox">
                <div class="cube">
                    <div class="front style"></div>
                    <div class="back style"></div>
                    <div class="left style"></div>
                    <div class="right style"></div>
                    <div class="top style"></div>
                    <div class="bottom style"></div>
                </div>
                <div class="cube">
                    <div class="front style"></div>
                    <div class="back style"></div>
                    <div class="left style"></div>
                    <div class="right style"></div>
                    <div class="top style"></div>
                    <div class="bottom style"></div>
                </div>
                <div class="cube">
                    <div class="front style"></div>
                    <div class="back style"></div>
                    <div class="left style"></div>
                    <div class="right style"></div>
                    <div class="top style"></div>
                    <div class="bottom style"></div>
                </div>
                <div class="cube">
                    <div class="front style"></div>
                    <div class="back style"></div>
                    <div class="left style"></div>
                    <div class="right style"></div>
                    <div class="top style"></div>
                    <div class="bottom style"></div>
                </div>
                <div class="cube">
                    <div class="front style"></div>
                    <div class="back style"></div>
                    <div class="left style"></div>
                    <div class="right style"></div>
                    <div class="top style"></div>
                    <div class="bottom style"></div>
                </div>
                <div class="cube">
                    <div class="front style"></div>
                    <div class="back style"></div>
                    <div class="left style"></div>
                    <div class="right style"></div>
                    <div class="top style"></div>
                    <div class="bottom style"></div>
                </div>
                <div class="cube">
                    <div class="front style"></div>
                    <div class="back style"></div>
                    <div class="left style"></div>
                    <div class="right style"></div>
                    <div class="top style"></div>
                    <div class="bottom style"></div>
                </div>
                <div class="cube">
                    <div class="front style"></div>
                    <div class="back style"></div>
                    <div class="left style"></div>
                    <div class="right style"></div>
                    <div class="top style"></div>
                    <div class="bottom style"></div>
                </div>
                <div class="cube">
                    <div class="front style"></div>
                    <div class="back style"></div>
                    <div class="left style"></div>
                    <div class="right style"></div>
                    <div class="top style"></div>
                    <div class="bottom style"></div>
                </div>
            </div>
            <div class="box backBox">
                <div class="cube">
                    <div class="front style"></div>
                    <div class="back style"></div>
                    <div class="left style"></div>
                    <div class="right style"></div>
                    <div class="top style"></div>
                    <div class="bottom style"></div>
                </div>
                <div class="cube">
                    <div class="front style"></div>
                    <div class="back style"></div>
                    <div class="left style"></div>
                    <div class="right style"></div>
                    <div class="top style"></div>
                    <div class="bottom style"></div>
                </div>
                <div class="cube">
                    <div class="front style"></div>
                    <div class="back style"></div>
                    <div class="left style"></div>
                    <div class="right style"></div>
                    <div class="top style"></div>
                    <div class="bottom style"></div>
                </div>
                <div class="cube">
                    <div class="front style"></div>
                    <div class="back style"></div>
                    <div class="left style"></div>
                    <div class="right style"></div>
                    <div class="top style"></div>
                    <div class="bottom style"></div>
                </div>
                <div class="cube">
                    <div class="front style"></div>
                    <div class="back style"></div>
                    <div class="left style"></div>
                    <div class="right style"></div>
                    <div class="top style"></div>
                    <div class="bottom style"></div>
                </div>
                <div class="cube">
                    <div class="front style"></div>
                    <div class="back style"></div>
                    <div class="left style"></div>
                    <div class="right style"></div>
                    <div class="top style"></div>
                    <div class="bottom style"></div>
                </div>
                <div class="cube">
                    <div class="front style"></div>
                    <div class="back style"></div>
                    <div class="left style"></div>
                    <div class="right style"></div>
                    <div class="top style"></div>
                    <div class="bottom style"></div>
                </div>
                <div class="cube">
                    <div class="front style"></div>
                    <div class="back style"></div>
                    <div class="left style"></div>
                    <div class="right style"></div>
                    <div class="top style"></div>
                    <div class="bottom style"></div>
                </div>
                <div class="cube">
                    <div class="front style"></div>
                    <div class="back style"></div>
                    <div class="left style"></div>
                    <div class="right style"></div>
                    <div class="top style"></div>
                    <div class="bottom style"></div>
                </div>
            </div>
        </div>
        <div class="btn">
            <button id="go">动起来</button>
            <button id="stop" style="background: #f00;border-color: #f00">静下来</button>
        </div>
        
    </div>
    
    </body>
    <script type="text/javascript">
        $('.magicBox').css({
            'transform': 'rotateX(45deg) rotateY(-45deg)',
        })
    
        var downFlag=false;
        var mouse={};
        var deg={};
        document.onmousedown=function(e){
            downFlag=true;
            mouse.downX=e.clientX;
            mouse.downY=e.clientY;
            deg.downDegX=parseFloat(document.getElementById('MagicBox').style.webkitTransform.match(/rotateX((.*?))/)[1]);
            deg.downDegY=parseFloat(document.getElementById('MagicBox').style.webkitTransform.match(/rotateY((.*?))/)[1]);
        }
        document.onmouseup=function(){
            downFlag=false;
        }
        document.onmousemove=function(e){
            mouse.moveX=e.clientX;
            mouse.moveY=e.clientY;
            if(downFlag){
                $('.magicBox').css({
                    '-webkit-transform': 'rotateX('+(deg.downDegX-(mouse.moveY-mouse.downY))+'deg) rotateY('+(deg.downDegY-(mouse.downX-mouse.moveX))+'deg)',
                })
            }
        }
    
        $('#go').on('click',function(){
            $('.frontBox').addClass('moveFront');
            $('.middleBox').addClass('moveMiddle');
            $('.backBox').addClass('moveBack');
        })
        $('#stop').on('click',function(){
            $('.frontBox').removeClass('moveFront');
            $('.middleBox').removeClass('moveMiddle');
            $('.backBox').removeClass('moveBack');
        })
    </script>
    </html>
    236338364

    cube.css

    *{
        margin: 0;
        padding: 0
    }
    html{
        overflow: hidden;
    }
    .clearfloat:after{
        content: '';
        display: block;
        clear: both;
        line-height: 0;
    }
    .clearfloat{
        *zoom: -1;
    }
    
    
    .stage{
        position: absolute;
        width: 100%;
        height: 100%;
        -webkit-perspective: 2500px;
        background: #333;
    }
    
    .magicBox{
        position: absolute;
        top: 0;
        left: 0;
        width: 100%;
        height: 100%;
        -webkit-transform-style: preserve-3d;
        /*transform: rotateX(45deg) rotateY(-45deg) rotateZ(0deg);*/
        /*-webkit-transform: rotateX(45deg) rotateY(-45deg) rotateZ(0deg);*/
    }
    
    .box{
        width: 300px;
        height: 300px;
        position: absolute;
        top: 50%;
        left: 50%;
        margin-top: -150px;
        margin-left: -150px;
        -webkit-transform-style: preserve-3d;
    }
    
    .frontBox{
        -webkit-transform: translateZ(100px);
    }
    .middleBox{
        /*-webkit-transform: translateZ(50px);*/
    }
    .backBox{
        -webkit-transform: translateZ(-100px);
    }
    
    .cube{
        width: 100px;
        height: 100px;
        float: left;
        -webkit-transform-style: preserve-3d;
        /*-webkit-transform: rotateX(45deg) rotateY(-45deg);*/
    }
    
    .style{
        position: absolute;
        width: 100px;
        height: 100px;
        box-sizing: border-box;
        border-radius: 5px;
        border: 2px solid #333;
    }
    
    /*前面 沿着Z轴前移150px*/
    .cube .front{ 
        background: #FFFF00;
        transform: translateZ(50px);
        -ms-transform: translateZ(50px);
        -webkit-transform: translateZ(50px);
    }
    
    /*后面 沿着Z轴后移150px*/
    .cube .back{
        background: #009f41; 
        transform: translateZ(-50px) rotateY(180deg);
        -ms-transform: translateZ(-50px) rotateY(180deg);
        -webkit-transform: translateZ(-50px) rotateY(180deg);
    }
    
    /*左面 沿着Y轴旋转270度,然后沿着X轴左移一半*/
    .cube .left{
        background: #d50010;
        transform: rotateY(-90deg) translateX(-50%);
        -ms-transform: rotateY(-90deg) translateX(-50%);
        -webkit-transform: rotateY(-90deg) translateX(-50%);
        transform-origin: left;
    }
    
    /*右面 沿着Y轴旋转-270度,然后沿着X轴右移一半*/
    .cube .right{
        background: #fe8a0a;
        transform: rotateY(90deg) translateX(50%);
        -ms-transform: rotateY(90deg) translateX(50%);
        -webkit-transform: rotateY(90deg) translateX(50%);
        transform-origin: right;
    }
    
    /*上面 沿着X轴旋转-270度,然后沿着Y轴上移一半*/
    .cube .top{
        background: #00469f;
        transform: rotateX(-270deg) translateY(-50%);
        -ms-transform: rotateX(-270deg) translateY(-50%);
        -webkit-transform: rotateX(-270deg) translateY(-50%);
        transform-origin: top;
    }
    
    /*下面 沿着X轴旋转270度,然后沿着Y轴下移一半*/
    .cube .bottom{
        background: #fff;
        transform: rotateX(270deg) translateY(50%);
        -ms-transform: rotateX(270deg) translateY(50%);
        -webkit-transform: rotateX(270deg) translateY(50%);
        transform-origin: bottom;
    }
    
    .moveFront{
        animation: frontRotate 5s linear infinite;
        -webkit-animation: frontRotate 5s linear infinite;
        -o-animation: frontRotate 5s linear infinite;
    }
    .moveMiddle{
        animation: MiddleRotate 8s linear infinite;
        -webkit-animation: MiddleRotate 8s linear infinite;
        -o-animation: MiddleRotate 8s linear infinite;
    }
    .moveBack{
        animation: BackRotate 10s ease infinite;
        -webkit-animation: BackRotate 10s ease infinite;
        -o-animation: BackRotate 10s ease infinite;
    }
    
    @keyframes frontRotate{
        from{
            transform: rotateZ(0deg) translateZ(100px);
            -webkit-transform: rotateZ(0deg) translateZ(100px);
            -o-transform: rotateZ(0deg) translateZ(100px);
            -ms-transform: rotateZ(0deg) translateZ(100px);
        }
        to{
            transform: rotateZ(360deg) translateZ(100px);
            -webkit-transform: rotateZ(360deg) translateZ(100px);
            -o-transform: rotateZ(360deg) translateZ(100px);
            -ms-transform: rotateZ(360deg) translateZ(100px);
        }
    }
    @keyframes MiddleRotate{
        from{
            transform: rotateZ(0deg);
            -webkit-transform: rotateZ(0deg);
            -o-transform: rotateZ(0deg);
            -ms-transform: rotateZ(0deg);
        }
        to{
            transform: rotateZ(360deg);
            -webkit-transform: rotateZ(360deg);
            -o-transform: rotateZ(360deg);
            -ms-transform: rotateZ(360deg);
        }
    }
    @keyframes BackRotate{
        0%{
            transform: rotateZ(0deg) translateZ(-100px);
            -webkit-transform: rotateZ(0deg) translateZ(-100px);
            -o-transform: rotateZ(0deg) translateZ(-100px);
            -ms-transform: rotateZ(0deg) translateZ(-100px);
        }
        25%{
            transform: rotateZ(230deg) translateZ(-100px);
            -webkit-transform: rotateZ(230deg) translateZ(-100px);
            -o-transform: rotateZ(230deg) translateZ(-100px);
            -ms-transform: rotateZ(230deg) translateZ(-100px);
        }
        75%{
            transform: rotateZ(-55deg) translateZ(-100px);
            -webkit-transform: rotateZ(-55deg) translateZ(-100px);
            -o-transform: rotateZ(-55deg) translateZ(-100px);
            -ms-transform: rotateZ(230deg) translateZ(-100px);
        }
        100%{
            transform: rotateZ(0deg) translateZ(-100px);
            -webkit-transform: rotateZ(0deg) translateZ(-100px);
            -o-transform: rotateZ(0deg) translateZ(-100px);
            -ms-transform: rotateZ(0deg) translateZ(-100px);
        }
    }
    
    .btn{
        text-align: center;
    }
    .btn button{
        width: 120px;
        height: 50px;
        background: #0f0;
        border: 1px solid #0f0;
        border-radius: 2px;
        color: #fff;
        font-weight: bold;
        cursor: pointer;
    }
    236338364
  • 相关阅读:
    波形捕捉:(9)写入到WAV文件
    C#基础回顾:GridView全选演示
    VS.net和Reflector 图标解释
    Dot Net屏幕传输 v1.0
    C#基础回顾:用GDI+绘制验证码
    波形捕捉:(8)使用“捕捉缓冲区”
    DirectX编程:C#中利用Socket实现网络语音通信[初级版本]
    DirectX编程:[初级]C#中利用DirectSound播放WAV格式声音[最少只要4句话]
    GroupingView控件 使用经验
    Dot Net下实现屏幕图像差异获取v2.0
  • 原文地址:https://www.cnblogs.com/moon-future/p/5903305.html
Copyright © 2020-2023  润新知