总之,没有(一些解决方法是可能的)
你的线animation-count: infinte
目前正在做的是这个元素:animation: ani1 3s 0s infinite, ani2 3s 9s infinite;
。所以,既然声明的第一个动画有infinite
的迭代次数,第二个将永远不会达到
最简单,最传统的方法是使用JavaScript和animationEnd
这样做(我用克雷格圆盾的PrefixedEvent function,但它没有必要)只有
var elem = document.querySelectorAll("div")[0],
pfx = ["webkit", "moz", "MS", "o", ""];
function PrefixedEvent(element, type, callback) {
for (var p = 0; p < pfx.length; p++) {
if (!pfx[p]) type = type.toLowerCase();
element.addEventListener(pfx[p]+type, callback, false);
}
}
PrefixedEvent(elem, "animationend", function() { switchAnims(elem) });
function switchAnims(element) {
if(element.style.animationName = "ani1") {
element.style.animationName = "ani2";
} else {
element.style.animationName = "ani1";
}
}
(WebKit的 - 其他前缀需要添加)
否则,对于此刻的纯CSS修复你就必须将它们合并为一个动画。对于你,看起来像
@keyframes aniBoth {
0%, 16.666%, 33.333% { background: green; }
8.333%, 24.999%, 41.666% { background: red; }
50% { background: green; }
50.001% { background:white; width: 100px; }
75%, 100% { width: 100px; }
62.5%, 87.5% { width: 150px; }
}
(webkit的唯一的 - 需要其他前缀添加)
纯粹的CSS修复的语法乍一看令人困惑,但比我的解决方案更加优雅和简洁。荣誉。 – shshaw
我确实希望它是纯CSS,但问题是 1)我将不得不重新计算百分比,2)计时功能。 我想我留下了JavaScript。 – Qwerty