Ich fand die Antwort basierend auf dem Quellcode und den Beispielen auf der Github-Seite für CSS3-Übergangstests .
Grundsätzlich haben CSS-Animationen ein animationEndEreignis, das ausgelöst wird, wenn die Animation abgeschlossen ist.
Für Webkit-Browser heißt dieses Ereignis " webkitAnimationEnd". Um eine Animation nach dem Aufruf zurückzusetzen, müssen Sie dem Element für das animationEndEreignis einen Ereignis-Listener hinzufügen .
In einfachem Vanille-Javascript:
var element = document.getElementById('box');
element.addEventListener('webkitAnimationEnd', function(){
this.style.webkitAnimationName = '';
}, false);
document.getElementById('button').onclick = function(){
element.style.webkitAnimationName = 'shake';
};
und mit jQuery:
var $element = $('#box').bind('webkitAnimationEnd', function(){
this.style.webkitAnimationName = '';
});
$('#button').click(function(){
$element.css('webkitAnimationName', 'shake');
});
Der Quellcode für CSS3-Übergangstests (oben erwähnt) enthält das folgende supportObjekt, das für browserübergreifende CSS-Übergänge, -Transformationen und -Animationen hilfreich sein kann.
Hier ist der Support-Code (neu formatiert):
var css3AnimationSupport = (function(){
var div = document.createElement('div'),
divStyle = div.style,
support = {
transition:
divStyle.MozTransition === ''? {name: 'MozTransition' , end: 'transitionend'} :
(divStyle.MsTransition === ''? {name: 'MsTransition' , end: 'msTransitionend'} :
(divStyle.WebkitTransition === ''? {name: 'WebkitTransition', end: 'webkitTransitionEnd'} :
(divStyle.OTransition === ''? {name: 'OTransition' , end: 'oTransitionEnd'} :
(divStyle.transition === ''? {name: 'transition' , end: 'transitionend'} :
false)))),
transform:
divStyle.MozTransform === '' ? 'MozTransform' :
(divStyle.MsTransform === '' ? 'MsTransform' :
(divStyle.WebkitTransform === '' ? 'WebkitTransform' :
(divStyle.OTransform === '' ? 'OTransform' :
(divStyle.transform === '' ? 'transform' :
false))))
};
support.transformProp = support.transform.name.replace(/([A-Z])/g, '-$1').toLowerCase();
return support;
}());
Ich habe den Code nicht hinzugefügt, um "Animationseigenschaften" für jeden Browser zu erkennen. Ich habe diese Antwort "Community Wiki" gemacht und überlasse das dir. :-)