Wie macht JQuery Animationen?

7

JQuery ist in Javascript geschrieben. Als jemand, der ein wenig von jedem weiß, muss ich mich fragen, wie sie etwas davon geschrieben haben. Wie animieren Sie HTML-Elemente in reinem Javascript? Wird die CSS-Property, die animiert werden soll, einfach wiederholt, indem standardmäßige DOM-Manipulation verwendet wird und Callbacks asynchron ausgeführt werden? Oder ist es etwas anspruchsvoller?

    
McGarnagle 28.03.2012, 22:13
quelle

4 Antworten

16

jQuery-Animationen aktualisieren nur die CSS-Eigenschaften eines wiederkehrenden Timers (wodurch er asynchron wird).

Sie implementieren auch einen Tweening-Algorithmus, der verfolgt, ob die Animation dem Zeitplan oder dem Zeitplan voraus ist, und sie passen die Schrittgröße in der Animation bei jedem Schritt so an, dass sie bei Bedarf aufholen oder verlangsamen. Dadurch kann die Animation in der angegebenen Zeit abgeschlossen werden, unabhängig davon, wie schnell der Host-Computer ist. Der Nachteil ist, dass langsame oder ausgelastete Computer mehr abgehackte Animationen zeigen.

Sie unterstützen auch Beschleunigungsfunktionen, die die Zeit / Form der Beschleunigung der Animation steuern. Linear bedeutet eine konstante Geschwindigkeit. Swing ist typischer, starte langsam, beschleunige auf maximale Geschwindigkeit in der Mitte und dann langsam.

Da Animationen asynchron sind, implementiert jQuery auch eine Animationswarteschlange, sodass Sie mehrere Animationen angeben können, die nacheinander ausgeführt werden sollen. Die zweite Animation beginnt, wenn die erste Animation beendet ist und so weiter. jQuery bietet auch eine Vervollständigungsfunktion. Wenn Sie möchten, dass ein Teil Ihres eigenen Codes nach Abschluss einer Animation ausgeführt wird, können Sie eine Rückruffunktion angeben, die beim Abschluss der Animation aufgerufen wird. Auf diese Weise können Sie einen Vorgang ausführen, wenn die Animation abgeschlossen ist, z. B. die Animation eines anderen Objekts starten, ein Objekt ausblenden usw. ...

Zu Ihrer Information: Der jQuery-JavaScript-Quellcode ist vollständig verfügbar, wenn Sie weitere Informationen wünschen. Der Kern der Arbeit ist in einer lokalen Funktion namens doAnimation() , obwohl ein Großteil der Arbeit in den Funktionen step und update erledigt wird, die mit der Definition von jQuery.fx.prototype gefunden werden können.

    
jfriend00 28.03.2012, 22:16
quelle
2

Das ist es: eine einfache alte setInterval und einige DOM-Manipulation.

Natürlich ist der Code ein bisschen komplexer als das.

Schauen Sie: Ссылка , nahe dem Ende der Datei. Suchen Sie nach jQuery.fx.prototype.

    
mddw 28.03.2012 22:17
quelle
1

Wenn das Element während einer jQuery-Animation fast immer überprüft wird, ändert es den CSS-Code, der dem Element über jQuery zugewiesen wird, das nicht wirklich von dem von Ihnen geschriebenen HTML zugewiesen wird. Holen Sie sich einen FireBug, wenn Sie ihn nicht für Firefox haben, und prüfen Sie, was während der Ausführung der Animationen vor sich geht.

    
Grigor 28.03.2012 22:16
quelle
1

Ohne den Code selbst gelesen zu haben, verwendet er tatsächlich Standard-Javascript-Methoden und -Eigenschaften, um die DOM-Elemente und CSS-Stile in regelmäßigen Abständen ("Ticks") zu aktualisieren, was mit setInterval() und% erreicht wird. co_de% Methoden.

    
GregL 28.03.2012 22:17
quelle