Sono sorpreso dal fatto che una regola di transizione CSS3 applicata tramite jQuery dopo una modifica di proprietà CSS basata su jQuery anima effettivamente questa modifica di proprietà. Dare un'occhiata a http://jsfiddle.net/zwatf/3/:esempio JavaScript/jQuery molto semplice: ordine di valutazione imprevisto delle istruzioni
Inizialmente, un div è disegnato da due classi e ha una certa altezza (200px) a causa delle proprietà CSS predefinite di queste due classi. L'altezza viene quindi modificato con jQuery tramite rimozione di una classe:
$('.container').removeClass('active');
Questo riduce l'altezza da 200px per 15px.
Dopo di che, una regola di transizione viene applicata al contenitore mediante aggiunta di una classe:
$('.container').addClass('all-transition');
Quello che sta accadendo è che la riduzione dell'altezza si anima (su Firefox e Chrome, almeno). Nel mio mondo, questo non dovrebbe accadere se l'ordine delle istruzioni ha un significato.
Credo che questo comportamento può essere spiegato molto bene. Perché sta succedendo? Come posso impedirlo?
Questo è ciò che voglio raggiungere:
- modificare lo stile di default con jQuery (non animato da transizione CSS3!)
- Applica la regola di transizione con jQuery
- cambiamento di una proprietà con jQuery (animato per transizione CSS3)
(1) e (2) dovrebbero accadere il più rapidamente possibile, quindi non mi piace lavorare con ritardi arbitrari.
Questo è davvero strano e forse un bug del browser. Ho aggiornato il violino per usare removeClass e inserire un'interruzione del debugger prima della prima funzione. http://jsfiddle.net/Danack/u9X4m/4/ Se passi alla prima funzione, quindi esegui il JS da lì, tutto funziona come ti aspetteresti. Senza la dichiarazione del debugger, c'è lo stesso strano effetto di animazione che stai vedendo. Non c'è codice in removeClass per usare qualsiasi animazione. Sto vedendo questo su Chrome btw. – Danack
Chrome 25.0.1364.152 su mac - mostra l'animazione in modo errato. Safari 5.1.7 (6534.57.2) su mac - mostra l'animazione in modo errato. – Danack
@abbood: sto vedendo un'animazione con Firefox 20 e Chrome 25 @ http://jsfiddle.net/zwatf/3/ –