JavaScript/DOM/Element/animate
Die element.animate() Methode ermöglicht es, mithilfe der Web Animations API Elemente mit JavaScript zu animieren. Dabei werden CSS-Eigenschaften eingebunden, deren Werte dann dynamisch verändert werden.
Inhaltsverzeichnis
Syntax
element.animate(keyframes, options);
Folgende Parameter sind nötig:
keyframes
: enthält CSS-Eigenschaften und deren Werte in eineroptions
: entweder eine Zeitangabe in Millisekunden oder ein Objekt, das Zeitangabe, Timing Options und weitere Optionen enthältid
: (optionale) Zeichenkette mit einer idcomposite
: (optionale) Angabe, wie mit Werten aus anderen Animation zu verfahren istdelay
: Verzögerung des Ausführungsbeginnsdirection
: Richtungeasing
: Beschleunigungskurven der AnimationendDelay
: Verzögerung am Ende der Animationfill
: Ansicht nach Ablauf der Animationiterations
: Anzahl der WiederholungeniterationStart
: Startpunkt der AusführungiterationComposite
:spacing
: Verteilung der Keyframes
Objektschreibweise
In dieser Variante enthält ein Objekt Schlüssel-Wert-Paare der zu animierenden CSS-Eigenschaft(en) und ihrer Werte:
element.animate({
transform: ["translate( 0px)", "translate(100px)", "translate( 0px)"],
color: ["black", "red" , "black"]
}, (1000));
Array von Objekten
In dieser Variante wird ein Array von Objekten aus CSS-Eigenschaften und ihren Werten verwendet:
element.animate([
{transform: 'translate( 0px)', color: 'black'},
{transform: 'translate(100px)', color: 'red'},
{transform: 'translate( 0px)', color: 'black'},
], {
duration: 1000, // Zeit in Ms,
iterations: Infinity, // Wiederholungen (hier unendlich)
delay: 300 // Verzögerung
});
Optionen
composite
Die composite
-Eigenschaft ist eine optionale Angabe, wie mit Werten aus anderen Animation zu verfahren ist
-
replace
: Standardwert, bisherige Werte werden überschrieben -
add
: Werte werden zusammengefasst und nacheinander ausgeführt
translate(100px)
undrotate(50deg
) →translate(100px) rotate(50deg)
accumulate
: Werte werden zusammengefasst
translate(100px)
undtranslate(50px)
→translate(150px)
, nichttranslate(100px) translate(50px)
direction
Die direction
-Eigenschaft gibt die Richtung des Animationsverlaufs an.
-
'normal'
: Standardwert 'reverse'
: rückwärts,'alternate'
: ändert (wie ein Pendel) nach jeder Animation die Richtung,'alternate-reverse'
: dito, nur umgekehrt
delay
Die delay
-Eigenschaft legt eine Verzögerung am Beginn der Animation fest. (Siehe auch die CSS-Eigenschaft animation-delay)
Sie erwartet eine Zeitangabe in ms (Standardwert = 0).
endDelay
Die endDelay
-Eigenschaft legt eine Verzögerung am Ende der Animation fest.
Sie erwartet eine Zeitangabe in ms (Standardwert = 0).
duration
Die duration
-Eigenschaft legt die Dauer der Animation in Millisekunden fest.
easing
Mit der easing
-Eigenschaft können Sie Beschleunigungskurven der Animation definieren.
linear
: ( Standardwert) Übergang mit gleicher Geschwindigkeit vom Start bis zum Stop
- (⇔ cubic-bezier(0,0,1,1))
ease
: Übergang mit langsamen Start, beschleunigt und endet langsam
- (⇔ cubic-bezier(0.25,0.1,0.25,1))
ease-in
: Übergang mit einem langsamen Start
- (⇔ cubic-bezier(0.42,0,1,1))
ease-out
: Übergang mit einem langsamen Ende
- (⇔cubic-bezier(0,0,0.58,1))
ease-in-out
: Übergang mit einem langsamen Start und Ende
- (⇔ cubic-bezier(0.42,0,0.58,1))
Zahlenangabe
: Zahlenangabe einer Bézier-Kurve
- z.B.
cubic-bezier(0.42, 0, 0.58, 1)
-
steps(<integer>)
: lässt die Animation in mehreren Schritten springen; vgl. Ticken einer Uhr
- Die
easing
-Eigenschaft entspricht der CSS-Eigenschaft animation-timing-function. - Dort finden Sie auch ein Beispiel, was die Unterschiede zwischen den Beschleunigungsfunktionen verdeutlicht.
- Jedoch hat
easing
im Unterschied zuranimation-timing-function
den Standardwertlinear
anstelle vonease
.
- MDN: EffectTiming.easing
- Daniel Wilson: Jumps: The New Steps() in Web Animation
fill
Die fill
-Eigenschaft legt die Darstellung nach Ablauf der Animation fest.
none
: (Standardwert), Auswirkungen der Animation sind nur während des Ablaufs sichtbar, nicht jedoch nach Ablauf oder während einer Pauseforwards
: das Ergebnis der Animation soll nach deren Ablauf weiterhin angezeigt werden.backwards
: animiertes Objekt springt auf den Ausgangspunkt zurückboth
: kombiniert die Auswirkungen vonforwards
undbackwards
und richtet sich nach dem aktuellen Zustand vor Beendigung der Animation
iterations
Die iterations
-Eigenschaft legt die Anzahl der Wiederholungen fest.
Zahlenangabe
: Standardwert 0, d. h. Animation wird einmal ausgeführtInfinity
: (Unendlichkeit), ununterbrochen fortlaufende Animation
'infinite'
festgelget wird, verwendet die API die Eigenschaft iterations und das Schlüsselwort Infinity
, dass ohne Anführungszeichen notiert wird.iterationStart
Die iterationStart
-Eigenschaft legt fest, an welcher Stelle und bei welchem Durchlauf die Animation startet.
Sie erwartet eine Zahlenangabe einer Dezimal- oder ganzen Zahl größer oder gleich 0 (Standardwert =0)
iterationsComposite
iterationComposite
:
replace
: Standardwert, bisherige Werte werden überschriebenaccumulate
: Werte werden zusammengefasst
spacing
Mit der spacing
-Eigenschaft können Sie festlegen, wie die einzelnen keyframes über die Dauer der Animation verteilt werden.
distribute
: Standardwert, keyframes werden gleichmäßig über Animationsdauer verteiltpaced
: keyframes werden anhand ihrer Werte so verteilt, dass größere Wertunterschiede die Keyframes weiter auseinanderziehen.
Anwendungsbeispiel
var kreis = document.getElementById('kreis');
kreis.onmouseover = function () {
kreis.animate([{
transform: 'translate( 0px)' + 'scale(1.0)',
background: '#dfac20'
}, {
transform: 'translate(100px)' + 'scale(1.5)',
background: 'red'
}, {
transform: 'translate( 0px)' + 'scale(1.0)',
background: 'black'
}
], {
duration: 1000,
iterations: 10
});
};
In diesem Beispiel wird die Animation mit einem mouseover ausgelöst. Der Kreis wird in zwei CSS-Eigenschaften animiert. Einerseits wird er mit transform: translate()
verschoben; zusätzlich wird der Hintergrund unterschiedlich gefärbt. Die Animation dauert eine Sekunde und wird 10mal wiederholt.
Siehe auch
- Web Animations API
- Bildwechsler
(Einführung in Web Animations API)- Animieren in JavaScript
- Animationen synchronisieren
- Animationen steuern
- Extras (CSS-Dateien nachladen)
Weblinks
- W3C: 5.14. The Animatable interface
- MDN: Element.animate()
- birtles.github.io: Are we animated yet? – Übersicht über Firefox-Implementation der Web Animations API
- drweb: Demnächst auf Ihrem Bildschirm: CSS3-Animations mit der neuen JavaScript-Methode animate()
- html5rocks: Simplified Concepts in Web Animations Naming (Umbenennungen der einzelnen Methoden!)
- html5rocks: Web Animations - element.animate() is now in Chrome 36