每分钟运行一次css动画

时间:2015-12-02 14:22:14

标签: html css html5 css3 css-transitions

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

3 个答案:

答案 0 :(得分:2)

你需要&#34;假&#34;如果你想要一个纯CSS解决方案。使用百分比属性和动画持续时间来模拟延迟。

例如

&#13;
&#13;
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;
  }
}
&#13;
<div></div>
&#13;
&#13;
&#13;

答案 1 :(得分:2)

在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 demo
这样做的一个问题是更改时间更难。使用当前设置,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/

答案 2 :(得分:0)

我认为你可以玩“动画持续时间”和“动画延迟”规则。您可以设置效果的持续时间,以及等待下一次迭代的延迟。

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;
  }
}

希望它有所帮助。

此致