尝试使用css3动画连续闪现三个元素。我已经运行了,但每帧都有淡入淡出,我想将其删除。理想情况下,每个元素在1秒内保持可见,然后立即隐藏。
我尝试使用0%
和99%
为opacity:1
设置动画,为100%
设置opacity: 0
,但仍然没有运气。
我希望有一种方法可以消除褪色!
CSS:
.motion.play .frame {
-webkit-animation-name: flash;
-webkit-animation-duration: 3s;
-webkit-animation-iteration-count: infinite;
-webkit-animation-direction: linear;
}
.frame:nth-of-type(2) {
-webkit-animation-delay: 1s;
}
.frame:nth-of-type(3) {
-webkit-animation-delay: 2s;
}
@-webkit-keyframes flash {
0% {
opacity: 1;
}
100% {
opacity: 0;
}
}
答案 0 :(得分:13)
只需定义动画,使其尽可能长时间保持一个状态,然后尽快切换到另一个状态。像这样:
@-webkit-keyframes flash {
0% { opacity: 1; }
49% { opacity: 1; }
50% { opacity: 0; }
100% { opacity: 0; }
}
答案 1 :(得分:5)
使用正确的animation-timing-function
:
http://jsfiddle.net/rfGDD/1/(仅限WebKit)
.motion.play .frame {
-webkit-animation-name: flash;
-webkit-animation-duration: 3s;
-webkit-animation-iteration-count: infinite;
-webkit-animation-direction: normal; /* not "linear" */
-webkit-animation-fill-mode:forwards;
-webkit-animation-timing-function:steps(3, end);
}
MDN document on steps()
timing function
修改强>:
哎呀,刚刚意识到了逻辑上的缺陷。修订:http://jsfiddle.net/rfGDD/3/(仅限WebKit)
除了上述更改之外,请将flash
动画更改为以下内容:
@-webkit-keyframes flash {
0% {
opacity: 1;
}
33% {
opacity: 0;
}
100% {
opacity: 0;
}
}
问题是,动画播放3秒,但每个元素需要在第二个#1后保持opacity:0
状态,所以我需要将动画分成两个阶段(时间长度比率为1: 2),所以元素看起来像是在最后阶段停留2秒钟。
答案 2 :(得分:1)
您可以保持最长时间的不透明度并快速更改。
试试这个:
.blinkMe {
animation: blink 1s linear infinite;
}
@keyframes blink {
0%,50% {
opacity: 0;
}
51%,100% {
opacity: 1;
}
}