Я знайшов відповідь на основі вихідного коду та прикладів на сторінці github перехідних тестів CSS3 .
В основному, анімація CSS має animationEnd
подію, яка запускається після завершення анімації.
Для браузерів webkit ця подія називається “ webkitAnimationEnd
”. Отже, для того, щоб скинути анімацію після її виклику, потрібно додати прослуховувач подій до елемента animationEnd
події.
У простому ванільному javascript:
var element = document.getElementById('box');
element.addEventListener('webkitAnimationEnd', function(){
this.style.webkitAnimationName = '';
}, false);
document.getElementById('button').onclick = function(){
element.style.webkitAnimationName = 'shake';
};
та з jQuery:
var $element = $('#box').bind('webkitAnimationEnd', function(){
this.style.webkitAnimationName = '';
});
$('#button').click(function(){
$element.css('webkitAnimationName', 'shake');
});
Вихідний код для тестів переходів CSS3 (згаданий вище) має наступний support
об'єкт, який може бути корисним для переходів, перетворень та анімації CSS у різних браузерах.
Ось код підтримки (переформатований):
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;
}());
Я не додав код для виявлення властивостей "анімації" для кожного браузера. Я зробив цю відповідь “wiki спільноти” і залишаю це вам. :-)