2017-01-02 56 views
0

在我的项目中,当主页打开时,它应该运行一个CSS动画,以便立方体的脸部打开。动画完成后,脸部应该保留。所以我需要修改此代码,因为它是打开然后关闭的面。他们打开后,脸部应该保持在屏幕上而不是关闭。如何让这个CSS3动画显示第一帧并在动画完成后保持可见状态?

我该怎么做?

.sk-folding-cube { 
 
    margin: 20px auto; 
 
    width: 40px; 
 
    height: 40px; 
 
    position: relative; 
 
    -webkit-transform: rotateZ(45deg); 
 
    transform: rotateZ(45deg); 
 
} 
 
.sk-folding-cube .sk-cube { 
 
    float: left; 
 
    width: 50%; 
 
    height: 50%; 
 
    position: relative; 
 
    -webkit-transform: scale(1.1); 
 
    -ms-transform: scale(1.1); 
 
    transform: scale(1.1); 
 
} 
 
.sk-folding-cube .sk-cube:before { 
 
    content: ''; 
 
    position: absolute; 
 
    top: 0; 
 
    left: 0; 
 
    width: 100%; 
 
    height: 100%; 
 
    background-color: #333; 
 
    -webkit-animation: sk-foldCubeAngle 2.4s 1 linear both; 
 
    animation: sk-foldCubeAngle 2.4s 1 linear both; 
 
    -webkit-transform-origin: 100% 100%; 
 
    -ms-transform-origin: 100% 100%; 
 
    transform-origin: 100% 100%; 
 
} 
 
.sk-folding-cube .sk-cube2 { 
 
    -webkit-transform: scale(1.1) rotateZ(90deg); 
 
    transform: scale(1.1) rotateZ(90deg); 
 
} 
 
.sk-folding-cube .sk-cube3 { 
 
    -webkit-transform: scale(1.1) rotateZ(180deg); 
 
    transform: scale(1.1) rotateZ(180deg); 
 
} 
 
.sk-folding-cube .sk-cube4 { 
 
    -webkit-transform: scale(1.1) rotateZ(270deg); 
 
    transform: scale(1.1) rotateZ(270deg); 
 
} 
 
.sk-folding-cube .sk-cube5 { 
 
    -webkit-transform: scale(1.1) rotateZ(360deg); 
 
    transform: scale(1.1) rotateZ(360deg); 
 
} 
 
.sk-folding-cube .sk-cube5 { 
 
    -webkit-transform: scale(1.1) rotateZ(360deg); 
 
    transform: scale(1.1) rotateZ(360deg); 
 
} 
 
.sk-folding-cube .sk-cube2:before { 
 
    -webkit-animation-delay: 0.3s; 
 
    animation-delay: 0.3s; 
 
} 
 
.sk-folding-cube .sk-cube3:before { 
 
    -webkit-animation-delay: 0.6s; 
 
    animation-delay: 0.6s; 
 
} 
 
.sk-folding-cube .sk-cube4:before { 
 
    -webkit-animation-delay: 0.9s; 
 
    animation-delay: 0.9s; 
 
} 
 
.sk-folding-cube .sk-cube5:before { 
 
    -webkit-animation-delay: 1.2s; 
 
    animation-delay: 1.2s; 
 
} 
 
.sk-folding-cube .sk-cube6:before { 
 
    -webkit-animation-delay: 1.5s; 
 
    animation-delay: 1.5s; 
 
} 
 
@-webkit-keyframes sk-foldCubeAngle { 
 
    0%, 10% { 
 
    -webkit-transform: perspective(140px) rotateX(-180deg); 
 
    transform: perspective(140px) rotateX(-180deg); 
 
    opacity: 0; 
 
    } 
 
    25%, 
 
    75% { 
 
    -webkit-transform: perspective(140px) rotateX(0deg); 
 
    transform: perspective(140px) rotateX(0deg); 
 
    opacity: 1; 
 
    } 
 
    90%, 
 
    100% { 
 
    -webkit-transform: perspective(140px) rotateY(180deg); 
 
    transform: perspective(140px) rotateY(180deg); 
 
    opacity: 0; 
 
    } 
 
} 
 
@keyframes sk-foldCubeAngle { 
 
    0%, 10% { 
 
    -webkit-transform: perspective(140px) rotateX(-180deg); 
 
    transform: perspective(140px) rotateX(-180deg); 
 
    opacity: 0; 
 
    } 
 
    25%, 
 
    75% { 
 
    -webkit-transform: perspective(140px) rotateX(0deg); 
 
    transform: perspective(140px) rotateX(0deg); 
 
    opacity: 1; 
 
    } 
 
    90%, 
 
    100% { 
 
    -webkit-transform: perspective(140px) rotateY(180deg); 
 
    transform: perspective(140px) rotateY(180deg); 
 
    opacity: 0; 
 
    } 
 
}
<html> 
 

 
<head> 
 
    <link href="style.css" rel="stylesheet"> 
 
    <title>Open Cube</title> 
 
    <h1>Apertura Cubo</h1> 
 
</head> 
 

 
<body> 
 
    <div class="sk-folding-cube"> 
 
    <div class="sk-cube1 sk-cube"></div> 
 
    <div class="sk-cube2 sk-cube"></div> 
 
    <div class="sk-cube4 sk-cube"></div> 
 
    <div class="sk-cube3 sk-cube"></div> 
 
    <div class="sk-cube5 sk-cube"></div> 
 
    <div class="sk-cube6 sk-cube"></div> 
 
    </div> 
 
</body> 
 

 
</html>

UPDATE

我需要有像结果屏幕上的画面

enter image description here

+0

您需要将必要的帧添加到它的反向最终回到该位置。我还更新了这个问题,以更具体地说明你现在问的问题。 –

回答

1

一个由animation属性指定的东西是多少次animation should repeat。在你的例子中,你指定了1,但是通过指定0.5,动画将在一半时间后停止。

.sk-folding-cube { 
 
    margin: 20px auto; 
 
    width: 40px; 
 
    height: 40px; 
 
    position: relative; 
 
    -webkit-transform: rotateZ(45deg); 
 
    transform: rotateZ(45deg); 
 
} 
 
.sk-folding-cube .sk-cube { 
 
    float: left; 
 
    width: 50%; 
 
    height: 50%; 
 
    position: relative; 
 
    -webkit-transform: scale(1.1); 
 
    -ms-transform: scale(1.1); 
 
    transform: scale(1.1); 
 
} 
 
.sk-folding-cube .sk-cube:before { 
 
    content: ''; 
 
    position: absolute; 
 
    top: 0; 
 
    left: 0; 
 
    width: 100%; 
 
    height: 100%; 
 
    background-color: #333; 
 
    -webkit-animation: sk-foldCubeAngle 2.4s 0.5 linear both; 
 
    animation: sk-foldCubeAngle 2.4s 0.5 linear both; 
 
    -webkit-transform-origin: 100% 100%; 
 
    -ms-transform-origin: 100% 100%; 
 
    transform-origin: 100% 100%; 
 
} 
 
.sk-folding-cube .sk-cube2 { 
 
    -webkit-transform: scale(1.1) rotateZ(90deg); 
 
    transform: scale(1.1) rotateZ(90deg); 
 
} 
 
.sk-folding-cube .sk-cube3 { 
 
    -webkit-transform: scale(1.1) rotateZ(180deg); 
 
    transform: scale(1.1) rotateZ(180deg); 
 
} 
 
.sk-folding-cube .sk-cube4 { 
 
    -webkit-transform: scale(1.1) rotateZ(270deg); 
 
    transform: scale(1.1) rotateZ(270deg); 
 
} 
 
.sk-folding-cube .sk-cube5 { 
 
    -webkit-transform: scale(1.1) rotateZ(360deg); 
 
    transform: scale(1.1) rotateZ(360deg); 
 
} 
 
.sk-folding-cube .sk-cube5 { 
 
    -webkit-transform: scale(1.1) rotateZ(360deg); 
 
    transform: scale(1.1) rotateZ(360deg); 
 
} 
 
.sk-folding-cube .sk-cube2:before { 
 
    -webkit-animation-delay: 0.3s; 
 
    animation-delay: 0.3s; 
 
} 
 
.sk-folding-cube .sk-cube3:before { 
 
    -webkit-animation-delay: 0.6s; 
 
    animation-delay: 0.6s; 
 
} 
 
.sk-folding-cube .sk-cube4:before { 
 
    -webkit-animation-delay: 0.9s; 
 
    animation-delay: 0.9s; 
 
} 
 
.sk-folding-cube .sk-cube5:before { 
 
    -webkit-animation-delay: 1.2s; 
 
    animation-delay: 1.2s; 
 
} 
 
.sk-folding-cube .sk-cube6:before { 
 
    -webkit-animation-delay: 1.5s; 
 
    animation-delay: 1.5s; 
 
} 
 
@-webkit-keyframes sk-foldCubeAngle { 
 
    0%, 10% { 
 
    -webkit-transform: perspective(140px) rotateX(-180deg); 
 
    transform: perspective(140px) rotateX(-180deg); 
 
    opacity: 0; 
 
    } 
 
    25%, 
 
    75% { 
 
    -webkit-transform: perspective(140px) rotateX(0deg); 
 
    transform: perspective(140px) rotateX(0deg); 
 
    opacity: 1; 
 
    } 
 
    90%, 
 
    100% { 
 
    -webkit-transform: perspective(140px) rotateY(180deg); 
 
    transform: perspective(140px) rotateY(180deg); 
 
    opacity: 0; 
 
    } 
 
} 
 
@keyframes sk-foldCubeAngle { 
 
    0%, 10% { 
 
    -webkit-transform: perspective(140px) rotateX(-180deg); 
 
    transform: perspective(140px) rotateX(-180deg); 
 
    opacity: 0; 
 
    } 
 
    25%, 
 
    75% { 
 
    -webkit-transform: perspective(140px) rotateX(0deg); 
 
    transform: perspective(140px) rotateX(0deg); 
 
    opacity: 1; 
 
    } 
 
    90%, 
 
    100% { 
 
    -webkit-transform: perspective(140px) rotateY(180deg); 
 
    transform: perspective(140px) rotateY(180deg); 
 
    opacity: 0; 
 
    } 
 
}
<html> 
 

 
<head> 
 
    <link href="style.css" rel="stylesheet"> 
 
    <title>Open Cube</title> 
 
    <h1>Apertura Cubo</h1> 
 
</head> 
 

 
<body> 
 
    <div class="sk-folding-cube"> 
 
    <div class="sk-cube1 sk-cube"></div> 
 
    <div class="sk-cube2 sk-cube"></div> 
 
    <div class="sk-cube4 sk-cube"></div> 
 
    <div class="sk-cube3 sk-cube"></div> 
 
    <div class="sk-cube5 sk-cube"></div> 
 
    <div class="sk-cube6 sk-cube"></div> 
 
    </div> 
 
</body> 
 

 
</html>

+0

如果运行样本,它只运行一次。我在标题中重新提出了这个问题以更好地符合描述。作者希望一旦完成一次就将动画固定在屏幕上。虽然我更喜欢那个广场 - 我不确定最终(我认为)最终的标志应该是什么样子。 –

+0

谢谢,这是完美的 – Edoardo

+0

我已经更新了我的问题,我需要有最终结果不是矩形,而是一个特定的形式,你能帮助我吗? – Edoardo

0

更改opacity在的第一开口0进度keyframes1。当前设置为在最后的keyframes动画完成后隐藏帧。

见下其中动画的最后阶段仍然可见:

.sk-folding-cube { 
 
    margin: 20px auto; 
 
    width: 40px; 
 
    height: 40px; 
 
    position: relative; 
 
    -webkit-transform: rotateZ(45deg); 
 
    transform: rotateZ(45deg); 
 
} 
 
.sk-folding-cube .sk-cube { 
 
    float: left; 
 
    width: 50%; 
 
    height: 50%; 
 
    position: relative; 
 
    -webkit-transform: scale(1.1); 
 
    -ms-transform: scale(1.1); 
 
    transform: scale(1.1); 
 
} 
 
.sk-folding-cube .sk-cube:before { 
 
    content: ''; 
 
    position: absolute; 
 
    top: 0; 
 
    left: 0; 
 
    width: 100%; 
 
    height: 100%; 
 
    background-color: #333; 
 
    -webkit-animation: sk-foldCubeAngle 2.4s 1 linear both; 
 
    animation: sk-foldCubeAngle 2.4s 1 linear both; 
 
    -webkit-transform-origin: 100% 100%; 
 
    -ms-transform-origin: 100% 100%; 
 
    transform-origin: 100% 100%; 
 
} 
 
.sk-folding-cube .sk-cube2 { 
 
    -webkit-transform: scale(1.1) rotateZ(90deg); 
 
    transform: scale(1.1) rotateZ(90deg); 
 
} 
 
.sk-folding-cube .sk-cube3 { 
 
    -webkit-transform: scale(1.1) rotateZ(180deg); 
 
    transform: scale(1.1) rotateZ(180deg); 
 
} 
 
.sk-folding-cube .sk-cube4 { 
 
    -webkit-transform: scale(1.1) rotateZ(270deg); 
 
    transform: scale(1.1) rotateZ(270deg); 
 
} 
 
.sk-folding-cube .sk-cube5 { 
 
    -webkit-transform: scale(1.1) rotateZ(360deg); 
 
    transform: scale(1.1) rotateZ(360deg); 
 
} 
 
.sk-folding-cube .sk-cube5 { 
 
    -webkit-transform: scale(1.1) rotateZ(360deg); 
 
    transform: scale(1.1) rotateZ(360deg); 
 
} 
 
.sk-folding-cube .sk-cube2:before { 
 
    -webkit-animation-delay: 0.3s; 
 
    animation-delay: 0.3s; 
 
} 
 
.sk-folding-cube .sk-cube3:before { 
 
    -webkit-animation-delay: 0.6s; 
 
    animation-delay: 0.6s; 
 
} 
 
.sk-folding-cube .sk-cube4:before { 
 
    -webkit-animation-delay: 0.9s; 
 
    animation-delay: 0.9s; 
 
} 
 
.sk-folding-cube .sk-cube5:before { 
 
    -webkit-animation-delay: 1.2s; 
 
    animation-delay: 1.2s; 
 
} 
 
.sk-folding-cube .sk-cube6:before { 
 
    -webkit-animation-delay: 1.5s; 
 
    animation-delay: 1.5s; 
 
} 
 
@-webkit-keyframes sk-foldCubeAngle { 
 
    0%, 10% { 
 
    -webkit-transform: perspective(140px) rotateX(-180deg); 
 
    transform: perspective(140px) rotateX(-180deg); 
 
    opacity: 0; 
 
    } 
 
    25%, 
 
    75% { 
 
    -webkit-transform: perspective(140px) rotateX(0deg); 
 
    transform: perspective(140px) rotateX(0deg); 
 
    opacity: 1; 
 
    } 
 
    90%, 
 
    100% { 
 
    -webkit-transform: perspective(140px) rotateY(180deg); 
 
    transform: perspective(140px) rotateY(180deg); 
 
    opacity: 1; 
 
    } 
 
} 
 
@keyframes sk-foldCubeAngle { 
 
    0%, 10% { 
 
    -webkit-transform: perspective(140px) rotateX(-180deg); 
 
    transform: perspective(140px) rotateX(-180deg); 
 
    opacity: 0; 
 
    } 
 
    25%, 
 
    75% { 
 
    -webkit-transform: perspective(140px) rotateX(0deg); 
 
    transform: perspective(140px) rotateX(0deg); 
 
    opacity: 1; 
 
    } 
 
    90%, 
 
    100% { 
 
    -webkit-transform: perspective(140px) rotateY(180deg); 
 
    transform: perspective(140px) rotateY(180deg); 
 
    opacity: 1; 
 
    } 
 
}
<html> 
 

 
<head> 
 
    <link href="style.css" rel="stylesheet"> 
 
    <title>Open Cube</title> 
 
    <h1>Apertura Cubo</h1> 
 
</head> 
 

 
<body> 
 
    <div class="sk-folding-cube"> 
 
    <div class="sk-cube1 sk-cube"></div> 
 
    <div class="sk-cube2 sk-cube"></div> 
 
    <div class="sk-cube4 sk-cube"></div> 
 
    <div class="sk-cube3 sk-cube"></div> 
 
    <div class="sk-cube5 sk-cube"></div> 
 
    <div class="sk-cube6 sk-cube"></div> 
 
    </div> 
 
</body> 
 

 
</html>

+0

谢谢,它的工作原理,但现在我有另一个问题,我该怎么做才能完成所有面孔都打开的动画? – Edoardo

+0

@Edoardo - 如果您可以在您希望最终结果最终结果的问题中包含图像,那将非常有帮助。 [ToJa92](http://stackoverflow.com/a/41423297/3504007)的例子最后是一个矩形,如果这是你以后(建议运行他/她的样本,看看它是否适合你)。 –

+0

我编辑了这个问题,你能帮助我吗? toJa92s的答案是正确的,但我需要有一个不同于矩形的结果 – Edoardo

相关问题