我正在尝试创建一个文本,几秒后会淡入视图但我遇到了问题。淡入视图工作正常,但文本显示后几乎立即消失。其次我需要这个动画以延迟的方式工作,但是当我设置延迟时它似乎没有任何区别。延迟工作得很早。
为什么动画在显示后不久就会消失?我该怎么做才能正确显示?为什么延迟现在不起作用?请帮我。解决方案必须简单,但我可能没有考虑到正确的方向。
以下是我的代码。
HTML:
<div id="container" class="container">
<span class="fadeText">Sample Text</span>
</div>
CSS:
.container{
margin: 5% auto;
position: relative;
text-align: center;
}
.fadeText{
color: #5B83AD;
font-weight: bold;
font-size: 125%;
border-radius: 4px;
border: 1px solid #5B83AD;
padding: 4px;
text-align: center;
opacity: 0;
-webkit-animation-delay: 5s;
-moz-animation-delay: 5s;
animation-delay: 5s;
-webkit-animation: fadeIn 5s ease-in;
-moz-animation: fadeIn 5s ease-in;
animation: fadeIn 5s ease-in;
}
/* Animations */
@-moz-keyframes fadeIn{
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
@-webkit-keyframes fadeIn{
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
@keyframes fadeIn{
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
/* End of Animations */
小提琴:http://jsfiddle.net/hg4Xy/
注意:我只提取了代码的相关部分并在此处发布。
答案 0 :(得分:2)
将animation-fill-mode
设为forwards
。目前您的动画正在执行正常但在最后一个关键帧执行后它将进入其原始状态(opacity: 0
)。将填充模式设置为forwards
会使文本保留最后一个关键帧(opacity: 1
)设置的不透明度。 或者,您可以从opacity: 0
删除.fadeText
媒体资源。
-webkit-animation-fill-mode: forwards;
-moz-animation-fill-mode: forwards;
animation-fill-mode: forwards; /* always use standard un-prefixed version as last */
在CSS中的animation-delay
属性后面设置animation
。目前它正在animation
属性之前设置,因为animation
短手属性没有指定任何延迟,它会被覆盖。 或者,修改短手属性,如下所示。
-webkit-animation: fadeIn 5s ease-in;
-moz-animation: fadeIn 5s ease-in;
animation: fadeIn 5s ease-in;
/* set delay after animation */
-webkit-animation-delay: 5s;
-moz-animation-delay: 5s;
animation-delay: 5s;
/* addresses both items. 4th parameter is for delay and 5th is for fill mode */
-webkit-animation: fadeIn 5s ease-in 5s forwards;
-moz-animation: fadeIn 5s ease-in 5s forwards;
animation: fadeIn 5s ease-in 5s forwards;