我最近发现了如何“正确地”使用 CSS 动画(之前我因为不能像在 JavaScript 中那样生成复杂的序列而忽略了它们)。所以现在我开始了解他们。
为了达到这个效果,我试图让一个渐变“耀斑”扫过一个类似进度条的元素。类似于本机 Windows Vista/7进度条的效果。
@keyframes barshine {
from {background-image:linear-gradient(120deg,rgba(255,255,255,0) -10%,rgba(255,255,255,0.25) -5%,rgba(255,255,255,0) 0%);}
to {background-image:linear-gradient(120deg,rgba(255,255,255,0) 100%,rgba(255,255,255,0.25) 105%,rgba(255,255,255,0) 110%);}
}
.progbar {
animation: barshine 1s 4s linear infinite;
}
正如你所看到的,我试图有一个4秒的延迟,其次是闪光扫过1秒,重复。
然而,似乎 animation-delay
只适用于第一次迭代,在此之后,光芒只是不断扫过反复。
我“解决”了这个问题:
@keyframes expbarshine {
from {background-image:linear-gradient(120deg,rgba(255,255,255,0) -10%,rgba(255,255,255,0.25) -5%,rgba(255,255,255,0) 0%);}
80% {background-image:linear-gradient(120deg,rgba(255,255,255,0) -10%,rgba(255,255,255,0.25) -5%,rgba(255,255,255,0) 0%);}
to {background-image:linear-gradient(120deg,rgba(255,255,255,0) 100%,rgba(255,255,255,0.25) 105%,rgba(255,255,255,0) 110%);}
}
.progbar {
animation: barshine 5s linear infinite;
}
from
和 80%
是完全相同的,导致80% 的动画长度的“延迟”。
这可以工作,但是对于我的下一个动画,我需要延迟是可变的(对于特定的元素是常数,但是在使用动画的元素之间是可变的) ,而动画本身保持完全相同的长度。
有了上面的“解决方案”,我会结束了一个较慢的动画时,我想要的是一个较长的延迟。
是否有可能将 animation-delay
应用于所有迭代,而不仅仅是第一次迭代?