每分钟运行css动画



如何每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;
  }
}

希望能有所帮助。

问候

相关内容

  • 没有找到相关文章

最新更新