eir*_*ios 9 html css css3 css-transforms css-animations
我创建了css-cube并将其旋转:hover.
但它的旋转是基于立方体的一面!
我想从它的中心旋转它,就像在这个例子中一样.我正在尝试transform-origin属性但没有得到理想的结果.
我也尝试在一个立方体内放置一个中间飞机,但在那种情况下悬停不起作用!
.contain {
width: 300px;
height: 300px;
-webkit-perspective: 500px;
perspective: 500px;
position: absolute;
}
.main {
position:relative;
width:100px;
height:100px;
margin:100px 100px;
background:#07a;
overflow:visible;
transition: all linear,transform cubic-bezier(0.4, 0.25, 0.14, 1.5),background cubic-bezier(0.4, 0.25, 0.14, 1.5);
transition-duration: 700ms;
-moz-transform-style: preserve-3d;
-webkit-transform-style: preserve-3d;
transform-style: preserve-3d;
transform-origin: center center;
}
.main:hover{
transform:rotateY(180deg);
}
.top, .right, .left, .bottom,.lid{
position:absolute;
width:100px;
height:100px;
z-indexd:999;
transition: all 1s ease;
}
.top {
background:crimson;
top:-100px;
transform-origin : 50% 100%;
transform:rotateX(-90deg);
}
.bottom {
background:crimson;
bottom:-100px;
transform-origin :100% 0%;
transform:rotateX(90deg);
}
.left {
background:#ccc;
left:-100px;
transform-origin :100% 0%;
transform:rotateY(90deg);
}
.right {
background:#ccc;
right:-100px;
transform-origin : 0% 0%;
transform:rotateY(-90deg);
}
.lid {
background:#07a;
transform: translateZ(170px);
transform-origin : 0% 0%;
transform:translateZ(100px);
}Run Code Online (Sandbox Code Playgroud)
<div class="contain">
<div class="main">
<div class="lid"></div>
<div class="top"></div>
<div class="right"></div>
<div class="left"></div>
<div class="bottom"></div>
</div>
</div>Run Code Online (Sandbox Code Playgroud)
问题是你需要将变换原点设置在立方体的中心,而立方体是一个 3d 元素。你错过了第三维度!
所以应该是
transform-origin: center center 50px;
Run Code Online (Sandbox Code Playgroud)
因为你的立方体边长是 100px
transform-origin: center center 50px;
Run Code Online (Sandbox Code Playgroud)
.contain {
width: 300px;
height: 300px;
-webkit-perspective: 500px;
perspective: 500px;
position: absolute;
}
.main {
position:relative;
width:100px;
height:100px;
margin:100px 100px;
background:#07a;
overflow:visible;
transition: all linear,transform cubic-bezier(0.4, 0.25, 0.14, 1.5),background cubic-bezier(0.4, 0.25, 0.14, 1.5);
transition-duration: 700ms;
-moz-transform-style: preserve-3d;
-webkit-transform-style: preserve-3d;
transform-style: preserve-3d;
transform-origin: center center 50px;
}
.main:hover{
transform:rotateY(180deg);
}
.top, .right, .left, .bottom,.lid{
position:absolute;
width:100px;
height:100px;
z-indexd:999;
transition: all 1s ease;
}
.top {
background:crimson;
top:-100px;
transform-origin : 50% 100%;
transform:rotateX(-90deg);
}
.bottom {
background:crimson;
bottom:-100px;
transform-origin :100% 0%;
transform:rotateX(90deg);
}
.left {
background:#ccc;
left:-100px;
transform-origin :100% 0%;
transform:rotateY(90deg);
}
.right {
background:#ccc;
right:-100px;
transform-origin : 0% 0%;
transform:rotateY(-90deg);
}
.lid {
background:#07a;
transform: translateZ(170px);
transform-origin : 0% 0%;
transform:translateZ(100px);
}Run Code Online (Sandbox Code Playgroud)