在使用关键帧动画构建CSS3加载器时遇到一些问题。停止无限的CSS3动画并顺利恢复到初始状态
加载程序包含4个动画上下移动的框。我遇到的问题是,当动画应该停止时,这些框会跳到最初的位置。我正在寻找的行为是:加载程序无限制地进行动画,直到加载完成,此时它应该动画到初始位置并停止,有点像animation-iteration-count: infinite
并将其更改为animation-iteration-count: 1
以停止动画。 (这不工作顺便说一句)。
看到这个小提琴明白我的意思:https://jsfiddle.net/cazacuvlad/qjmhm4ma/(点击停止按钮时,箱子应该动画到初始位置,而不是跳跃)
基本设置是:
<div class="loader-wrapper"><span></span><span></span><span></span><span></span></div>
要启动加载程序,我要将包含动画的loader-active
类添加到loader-wrapper
。
LESS:
.loader-wrapper {
&.loader-active {
span {
.animation-name(loader);
.animation-duration(1200ms);
.animation-timing-function(ease-in-out);
.animation-play-state(running);
.animation-iteration-count(infinite);
&:nth-child(1) {
}
&:nth-child(2) {
.animation-delay(300ms);
}
&:nth-child(3) {
.animation-delay(600ms);
}
&:nth-child(4) {
.animation-delay(900ms);
}
}
}
}
我尝试添加动画在loader-wrapper
类的跨度W/O loader-active
当loader-active
是没有任何的运气加入animation-iteration-count
和animation-play-state
玩耍。
谢谢!
你不能做到这一点与CSS。你会需要我怀疑会快速复杂的Javascript。 –
在JS中做它是备份解决方案。我认为这是动画的有效用例,应该有一个纯CSS的方式来做到这一点。 –
动画很好,但CSS无法检测动画在(中)周期中的位置,然后根据条件运行。我甚至不确定JS是否可以做到这一点,但如果可以的话,那将是一种方式。 –