简而言之,不行(一些变通方法是可能的)
对于该元素,您的代码行
animation-count: infinte
当前正在执行此操作:
animation: ani1 3s 0s infinite, ani2 3s 9s infinite;
。因此,由于第一个声明的动画具有无限迭代次数,第二个将永远不会被触发。
最简单和常规的方法是使用JavaScript和
animationEnd
来实现(我使用Craig Buckler的
PrefixedEvent函数,但这不是必需的)。
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 - 需要添加其他前缀)