Nella mia funzione close voglio eseguire tutte le operazioni di ripulitura del DOM dopo che le transizioni di css hanno terminato l'esecuzione. Ma potrebbero non esserci transizioni in esecuzione/potrebbero essere multi-stage - (il mantenimento dei fogli di stile è fuori dalle mie mani).È possibile rilevare se è iniziata una transizione CSS arbitraria
Come potrei fare per scrivere una funzione simile al seguente
function close() {
myEl.removeClass('open');
if (animation is running/about to be run) {
// wait for transition to end, then recursively check to see if another
// one has started, wait for that ...
// then
cleanUpDOM();
} else {
cleanUpDOM();
}
}
I miei pensieri finora sono per avvolgere il controllo iniziale in un timeout/requestAnimationFrame al fine di dare l'animazione la possibilità di iniziare poi la verifica per vedere se è in esecuzione. Sfortunatamente, senza un evento transitionstart
non ho idea di come controllare se una transizione è iniziata.
modificare risposte raccomandano jquery sono irrilevanti come le animazioni jQuery sono le animazioni JavaScript, non transizioni CSS
se sai cosa proprietà viene animato è possibile determinare se l'animazione è in corso confrontando il valore della proprietà corrente elementi con quello che è il valore di stile CSS (aka target) è? – milks
@milks In generale non saprò cosa si sta passando, o anche se qualcosa è in fase di transizione. (Lo scenario peggiore è in effetti più complesso - potrei anche non sapere se la transizione è sull'elemento esterno, ad es. Nella sovrapposizione l'area del contenuto interno potrebbe ridursi a un punto sebbene la sovrapposizione esterna rimanga nera ... ma questo scenario non è 't così importante per ora) – wheresrhys
Penso che questo è un duplicato di http://stackoverflow.com/questions/2087510/callback-on-css-transition –