我正在尝试使用CSS转换来为一个三维立方体添加动画效果。在Chrome和Safari浏览器中,这个效果可以正常显示。但是在Firefox浏览器中,立方体的“盖子”旋转了90度后,直到又被旋转回0度才能正确显示。
我认为这可能与溢出(overflow)有关,但这似乎并没有帮助我解决问题。我不确定自己哪里做错了!
以下是我的代码:
https://codepen.io/simonandywilson/pen/RwGrgYJhtml body {
position: absolute;
height: 100%;
width: 100%;
display: flex;
overflow: hidden;
background: #808080;
}
.leftContainer,
.rightContainer {
width: 50%;
height: 100%;
position: relative;
display: flex;
transform-style: preserve-3d;
}
.leftContainer {
z-index: 99;
transform-origin: bottom right;
justify-content: flex-end;
transform: rotateX(-25deg) rotateY(-45deg);
animation: flatternLeft 2s 4s 1 forwards;
}
.rightContainer {
transform-origin: bottom left;
justify-content: flex-start;
transform: rotateX(-25deg) rotateY(45deg);
animation: flatternRight 2s 4s 1 forwards;
}
.face {
position: relative;
width: 50vh;
height: 50vh;
background: #ffffff;
border: solid 2px #0000ff;
}
.leftTop {
transform-origin: bottom right;
transform: rotateX(90deg);
animation: rotateLid 2s 1 forwards;
}
.rightTop {
transform-origin: bottom left;
transform: rotateX(90deg);
animation: rotateLid 2s 2s 1 forwards;
}
@keyframes rotateLid {
from {
transform: rotateX(90deg);
}
to {
transform: rotateX(0deg);
}
}
@keyframes flatternLeft {
from {
transform: rotateX(-25deg) rotateY(-45deg);
}
to {
transform: rotateX(0deg) rotateY(0deg);
}
}
@keyframes flatternRight {
from {
transform: rotateX(-25deg) rotateY(45deg);
}
to {
transform: rotateX(0deg) rotateY(0deg);
}
}
<div class="leftContainer">
<div class="cube">
<div class="face leftTop"></div>
<div class="face leftBottom"></div>
</div>
</div>
<div class="rightContainer">
<div class="cube">
<div class="face rightTop"></div>
<div class="face rightBottom"></div>
</div>
</div>