【问题标题】:Rotating a cube around its center Y axis, works first time围绕其中心 Y 轴旋转立方体,第一次工作
【发布时间】:2017-11-14 19:20:13
【问题描述】:

我用 html/css 制作了一个立方体。

我第一次应用旋转变换时,立方体围绕其中心 Y 轴旋转得非常好。

然而,第二次,立方体“向前”,然后在旋转时“向后移动”。立方体最终处于相同的位置,但过渡不同。

#wrapper {
    -webkit-perspective: 1100px;
    -webkit-perspective-origin: 50% 300px;
    perspective: 1100px;
    perspective-origin: 50% 300px;
    margin-top: 25px;
}

#cube {
    position: relative;
    margin: 0 auto;
    height: 1150px;
    width: 1150px;
    -webkit-transform-style: preserve-3d;
    -webkit-transition: all 2s ease;
    transform-style: preserve-3d;
    transition: all 2s ease;
    transform: translateZ(-100000px);
}

.face {
    position: absolute;
    height: 1140px;
    width: 1140px;
    padding: 20px;
    background-color: white;
    border: solid 1px black;
}


 #cube .one {        
            transform: translateZ(600px);
        }

        #cube .two {              
            transform: rotateY(90deg) translateZ(600px);
        }

        #cube .three {         
            transform: rotateY(180deg) translateZ(600px);
        }

        #cube .four {       
            transform: rotateY(-90deg) translateZ(600px);
        }

        #cube .five {           
            transform: rotateX(-90deg) translateZ(600px) rotate(180deg);
        }

        #cube .six {       
            transform: rotateX(90deg) translateZ(600px);
        }

一点点 Javascript 将立方体移动到一个好的视图中

$("#cube").css("transform", "translateZ(-2500px) translateX(-380px)");

JavaScript 应用旋转

if (direction == "left") {
        if (face == 1) {

            angle = angle + 90;
            $("#cube").css("transform", "rotateY(" + angle + "deg) translateX(2500px) translateZ(-380px)");
            face++;
        }
        else if (face == 2) {

            angle = angle + 90;
            $("#cube").css("transform", "rotateY(" + angle + "deg) translateZ(2500px)  translateX(380px)  ");              
            face++;
        }
        else if (face == 3) {

            angle = angle + 90;
            $("#cube").css("transform", "rotateY(" + angle + "deg) translateX(-2500px) translateZ(380px) ");
            face++;
        }
        else if (face == 4) {

            angle = angle + 90;
            $("#cube").css("transform", "rotateY(" + angle + "deg) translateZ(-2500px) translateX(-380px) ");

            face = 1;
        }
    }

【问题讨论】:

    标签: javascript jquery css transform


    【解决方案1】:

    我认为你的立方体面板上有不同的宽度!!您在 css 中有固定宽度,但填充会增加外部宽度。 检查它们是否与您的检查元素具有相同的宽度。尝试解决盒子大小问题。

    【讨论】:

    • 感谢您的建议。我检查了所有的面,它们的宽度、高度、填充等都相同。此外,如果我一直旋转,或者从左到右,第一个面有时也会发生“向前移动”故障。
    • 如果你有你的代码在线或在小提琴上会更好,所以我可以检查它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-19
    • 2013-07-28
    • 2022-08-18
    • 1970-01-01
    • 2019-09-20
    • 2017-02-21
    相关资源
    最近更新 更多