我正在尝试创建一个会在几秒钟后淡入视野的文本,但我遇到了问题。淡入 View 效果很好,但文本在显示后几乎立即消失。其次我需要这个动画以延迟的方式工作,但是当我设置延迟时它似乎没有任何区别。延迟在早些时候工作正常。
为什么动画刚播放不久就消失了?我应该怎么做才能正确显示它?为什么延迟现在不起作用?请帮我。解决方案必须很简单,但我的思路可能不正确。
下面是我的代码。
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 */
fiddle :http://jsfiddle.net/hg4Xy/
注意:我只提取了代码的相关部分并张贴在这里。
最佳答案
将animation-fill-mode
设置为forwards
。目前您的动画执行正常,但在执行完最后一个关键帧后它将恢复到原始状态(opacity: 0
)。将填充模式设置为 forwards
将使文本保留最后一个关键帧设置的不透明度(即 opacity: 1
)。 或者,您可以从 .fadeText
中删除 opacity: 0
属性。
-webkit-animation-fill-mode: forwards;
-moz-animation-fill-mode: forwards;
animation-fill-mode: forwards; /* always use standard un-prefixed version as last */
在 CSS 中的 animation
属性之后设置 animation-delay
。目前,它是在 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;
关于html - 面对 CSS 动画的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18394420/