In meiner Close-Funktion möchte ich alle meine DOM-Bereinigung tun, nachdem die CSS-Übergänge beendet sind. Es kann jedoch sein, dass keine Übergänge mehr laufen - möglicherweise mehrstufige - (die Pflege der Stylesheets liegt nicht in meinen Händen).Kann ich feststellen, ob ein beliebiger CSS-Übergang gestartet wurde?
Wie würde ich mich über eine Funktion, so etwas wie die folgenden
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();
}
}
Meine Gedanken sind so weit das Schreiben der Anfangsüberprüfung in einem Timeout/request, um wickeln die Animation eine Chance zu beginnen dann zu geben Überprüfung um zu sehen, ob es läuft. Leider habe ich ohne ein transitionstart
Ereignis keine Ahnung, wie man überprüft, ob ein Übergang begonnen hat.
bearbeiten Antworten jquery empfehlen sind irrelevant, da jquery Animationen Javascript Animationen sind, nicht CSS-Übergänge
wenn Sie wissen, welche Eigenschaft animiert wird, kann man bestimmen, ob die Animation läuft durch die Elemente aktuellen Eigenschaftswert zu vergleichen mit dem, was es Wert CSS-Stil (auch bekannt als Ziel) ist? – milks
@milks Im Allgemeinen werde ich nicht wissen, was umgestellt wird, oder sogar, wenn irgendetwas überhaupt umgestellt wird. (Worst-Case-Szenario ist sogar noch schwieriger - ich weiß vielleicht nicht einmal, ob der Übergang auf dem äußeren Element ist, zB im Overlay kann der innere Inhaltsbereich auf einen Punkt schrumpfen, obwohl das äußere Overlay nur schwarz bleibt ... aber dieses Szenario ist nicht 't so wichtig für jetzt) – wheresrhys
Ich denke, das ist ein Duplikat von http://stackoverflow.com/questions/2087510/callback-on-css-transition –