您的代码中缺少几个概念。
- CSS 类与 CSS ID
- 透视 div 容器
- 正确的“墙”div 定位
- 适当的事件处理
我的 JSFiddle
- 将事件处理程序移至 javascript 以使其更合规
http://jsfiddle.net/sw7aV/2/
我的 HTML
<div id="turn" onclick="turn()"></div>
<div id="container">
<div id="cube" class="sprite">
<div class="wall" id="front">front</div>
<div class="wall" id="back">back</div>
<div class="wall" id="top">top</div>
<div class="wall" id="bottom">bottom</div>
<div class="wall" id="left">left</div>
<div class="wall" id="right">right</div>
</div>
</div>
我的 CSS
#container {
float: left;
position: relative;
width: 300px;
height: 300px;
overflow: hidden;
border: 1px solid #CCCCCC;
-webkit-perspective: 900;
-moz-perspective: 900;
-o-perspective: 900;
perspective: 900;
}
.sprite {
width: 100%;
height: 100%;
position: absolute;
text-indent: 0px;
-webkit-transform: rotateY(0deg);
-moz-transform: rotateY(0deg);
-o-transform: rotateY(0deg);
transform: rotateY(0deg);
-webkit-transform-style: preserve-3d;
-moz-transform-style: preserve-3d;
-o-transform-style: preserve-3d;
transform-style: preserve-3d;
}
#cube {
width: 300px;
height: 300px;
-webkit-transition: -webkit-transform 1s linear;
}
#cube .wall {
display: block;
position: absolute;
height: 100%;
width: 257px;
-webkit-transform-style: preserve-3d;
-moz-transform-style: preserve-3d;
-o-transform-style: preserve-3d;
transform-style: preserve-3d;
-webkit-background-origin: content-box;
-moz-background-origin: content-box;
-o-background-origin: content-box;
background-origin: content-box;
border: 1px solid #DEDEDE;
color: white;
}
#cube #front {
-webkit-transform: rotateX(0deg) rotateY(-90deg) translateZ(150px);
-moz-transform: rotateX(0deg) rotateY(-90deg) translateZ(150px);
-ms-transform: rotateX(0deg) rotateY(-90deg) translateZ(150px);
-o-transform: rotateX(0deg) rotateY(-90deg) translateZ(150px);
transform: rotateX(0deg) rotateY(-90deg) translateZ(150px);
width: 300px;
height: 300px;
}
#cube #back {
-webkit-transform: rotateX(0deg) rotateY(90deg) translateZ(150px);
-moz-transform: rotateX(0deg) rotateY(90deg) translateZ(150px);
-ms-transform: rotateX(0deg) rotateY(90deg) translateZ(150px);
-o-transform: rotateX(0deg) rotateY(90deg) translateZ(150px);
transform: rotateX(0deg) rotateY(90deg) translateZ(150px);
width: 300px;
height: 300px;
}
#cube #top {
-webkit-transform: rotateX(90deg) rotateY(0deg) translateZ(150px);
-moz-transform: rotateX(90deg) rotateY(0deg) translateZ(150px);
-ms-transform: rotateX(90deg) rotateY(0deg) translateZ(150px);
-o-transform: rotateX(90deg) rotateY(0deg) translateZ(150px);
transform: rotateX(90deg) rotateY(0deg) translateZ(150px);
width: 300px;
height: 300px;
}
#cube #bottom {
-webkit-transform: rotateX(-90deg) rotateY(0deg) translateZ(150px);
-moz-transform: rotateX(-90deg) rotateY(0deg) translateZ(150px);
-ms-transform: rotateX(-90deg) rotateY(0deg) translateZ(150px);
-o-transform: rotateX(-90deg) rotateY(0deg) translateZ(150px);
transform: rotateX(-90deg) rotateY(0deg) translateZ(150px);
width: 300px;
height: 300px;
}
#cube #left {
-webkit-transform: rotateX(0deg) rotateY(180deg) translateZ(150px);
-moz-transform: rotateX(0deg) rotateY(180deg) translateZ(150px);
-ms-transform: rotateX(0deg) rotateY(180deg) translateZ(150px);
-o-transform: rotateX(0deg) rotateY(180deg) translateZ(150px);
transform: rotateX(0deg) rotateY(180deg) translateZ(150px);
width: 300px;
height: 300px;
}
#cube #right {
-webkit-transform: rotateX(0deg) rotateY(0deg) translateZ(150px);
-moz-transform: rotateX(0deg) rotateY(0deg) translateZ(150px);
-ms-transform: rotateX(0deg) rotateY(0deg) translateZ(150px);
-o-transform: rotateX(0deg) rotateY(0deg) translateZ(150px);
transform: rotateX(0deg) rotateY(0deg) translateZ(150px);
width: 300px;
height: 300px;
}