var transitionendHandler = function(eventObject) {
$(eventObject.target).attr('hidden', '');
$('#thanks').removeAttr('hidden');
};
$(document).on('transitionend', transitionendHandler);
Herewe’reusingjQuery’smethodstoaddahiddenattributetoeachlistitem,and
toremoveitfrom#thanks.
Multiple Transitions and transitionend Events
Compoundtransitions—thatis,atransitionofmultipleproperties—triggermultiple
transitionendevents.Atransitionsuchastransition: left 4s cubic-linear,
background 2s 500ms;willtriggertwotransitionendevents:onefortheleft
propertyandanotherforbackground.Todeterminewhichtransitiontriggeredthe
event,youcancheckthepropertyNamepropertyoftheeventobject:
var transitionendHandler = function(eventObject) {
if( eventObject.propertyName === 'opacity' ){
// Do something based on this value.
}
};
Occasionally,atransitionwillfailtocomplete.Thiscantypicallyhappenwhen
thepropertyisoverriddenwhileit’sinprogress—perhapsauseractionremoves
theclassname.Inthosesituations,thetransitionendeventwon’tfire.
Becauseofthisrisk,avoidusingthetransitionendeventtotriggeranything
“missioncritical,”suchasaformsubmission.
CSS Animation
ThinkofCSSanimationasthemoresophisticatedsistertoCSStransitions.Anima-
tionsdifferfromtransformsinafewkeyways:
■ Animationsdonotdegradegracefully.Ifthere’snosupportfromthebrowser,
theuserisoutofluck.ThealternativeistouseJavaScript.
■ Animationscanrepeat,andrepeatinfinitely.Transitionsarealwaysfinite.
208 CSS Master