如何每5分钟重新运行一次CSS动画?
html
<div></div>
css
div {
width: 300px;
height: 300px;
animation: anim 1s;
background: brown;
}
@keyframes anim {
from {
background: red;
}
top {
background: blue;
}
}
需要这个没有javascript
如果你想要一个纯CSS解决方案,你需要"伪造"它。使用百分比属性和动画持续时间来模拟延迟。
例如
div {
height: 20px;
width: 20px;
background-color: blue;
animation: changebgc 5s infinite;
}
@keyframes changebgc {
2% {
background-color: red;
}
4% {
background-color: blue;
}
98% {
background-color: blue;
}
}
<div></div>
在CSS中这样做需要一些破解,但它是可以做到的。你必须做一些数学运算,并找到如何正确地为动画计时:
div {
width: 300px;
height: 300px;
animation: anim 300s infinite;
background: brown;
}
@keyframes anim {
0% {
background: red;
}
0.33% {
background: blue;
}
100% {
background: blue;
}
}
JSFiddle演示
这样做的一个问题是更难改变时间。在当前设置下,red - blue
转换需要1秒,就像在JSFiddle中一样
计算方法很简单:100 / #_seconds = percentage in animation for 1 sec
,例如100 / 300 = 0.33
您可以在以下网站上阅读更多信息:
http://samuelmichaud.fr/2013/web-design/add-a-delay-between-repeated-css3-animations/
我认为您可以使用"动画持续时间"one_answers"动画延迟"规则。您可以设置效果的持续时间和延迟,以便等待下一次迭代。
div{
width: 300px;
height: 300px;
background: brown;
animation-name: anim;
animation-duration: 10s;
animation-iteration-count: 10000;
animation-direction: alternate;
animation-timing-function: ease-out;
animation-fill-mode: forwards;
animation-delay: 50s;
}
@keyframes anim {
from {
background: red;
}
to {
background: blue;
}
}
希望能有所帮助。
问候