CSS- Animationen
CSS-Animationen
CSS ermöglicht die Animation von HTML-Elementen ohne Verwendung von JavaScript oder Flash!
In diesem Kapitel lernen Sie folgende Eigenschaften kennen:
@keyframes
animation-name
animation-duration
animation-delay
animation-iteration-count
animation-direction
animation-timing-function
animation-fill-mode
animation
Browserunterstützung für Animationen
Die Zahlen in der Tabelle geben die erste Browserversion an, die die Eigenschaft vollständig unterstützt.
Property | |||||
---|---|---|---|---|---|
@keyframes | 43.0 | 10.0 | 16.0 | 9.0 | 30.0 |
animation-name | 43.0 | 10.0 | 16.0 | 9.0 | 30.0 |
animation-duration | 43.0 | 10.0 | 16.0 | 9.0 | 30.0 |
animation-delay | 43.0 | 10.0 | 16.0 | 9.0 | 30.0 |
animation-iteration-count | 43.0 | 10.0 | 16.0 | 9.0 | 30.0 |
animation-direction | 43.0 | 10.0 | 16.0 | 9.0 | 30.0 |
animation-timing-function | 43.0 | 10.0 | 16.0 | 9.0 | 30.0 |
animation-fill-mode | 43.0 | 10.0 | 16.0 | 9.0 | 30.0 |
animation | 43.0 | 10.0 | 16.0 | 9.0 | 30.0 |
Was sind CSS-Animationen?
Eine Animation lässt ein Element allmählich von einem Stil in einen anderen wechseln.
Sie können so viele CSS-Eigenschaften beliebig oft ändern, wie Sie möchten.
Um die CSS-Animation zu verwenden, müssen Sie zunächst einige Keyframes für die Animation angeben.
Keyframes halten fest, welche Stile das Element zu bestimmten Zeiten haben wird.
Die @keyframes-Regel
Wenn Sie CSS-Stile innerhalb der @keyframes
Regel angeben, ändert sich die Animation zu bestimmten Zeiten allmählich vom aktuellen Stil zum neuen Stil.
Damit eine Animation funktioniert, müssen Sie die Animation an ein Element binden.
Das folgende Beispiel bindet die „example“-Animation an das <div>-Element. Die Animation dauert 4 Sekunden und ändert allmählich die Hintergrundfarbe des <div>-Elements von „rot“ zu „gelb“:
Beispiel
/* The animation code */
@keyframes example {
from {background-color: red;}
to {background-color: yellow;}
}
/* The element to apply the animation to */
div {
width: 100px;
height: 100px;
background-color: red;
animation-name: example;
animation-duration: 4s;
}
Hinweis: Die animation-duration
Eigenschaft definiert, wie lange es dauern soll, bis eine Animation abgeschlossen ist. Wenn die animation-duration
Eigenschaft nicht angegeben ist, erfolgt keine Animation, da der Standardwert 0s (0 Sekunden) ist.
Im obigen Beispiel haben wir angegeben, wann sich der Stil ändern wird, indem wir die Schlüsselwörter „von“ und „bis“ verwendet haben (was 0 % (Anfang) und 100 % (abgeschlossen) darstellt).
Es ist auch möglich, Prozente zu verwenden. Durch die Verwendung von Prozent können Sie beliebig viele Stiländerungen hinzufügen.
Das folgende Beispiel ändert die Hintergrundfarbe des <div>-Elements, wenn die Animation zu 25 % abgeschlossen ist, zu 50 % abgeschlossen ist und erneut, wenn die Animation zu 100 % abgeschlossen ist:
Beispiel
/* The animation code */
@keyframes example
{
0% {background-color: red;}
25% {background-color: yellow;}
50% {background-color: blue;}
100% {background-color: green;}
}
/* The element to apply the animation to */
div {
width: 100px;
height: 100px;
background-color: red;
animation-name: example;
animation-duration: 4s;
}
Das folgende Beispiel ändert sowohl die Hintergrundfarbe als auch die Position des <div>-Elements, wenn die Animation zu 25 % abgeschlossen ist, zu 50 % abgeschlossen ist und erneut, wenn die Animation zu 100 % abgeschlossen ist:
Beispiel
/* The animation code */
@keyframes example
{
0% {background-color:red; left:0px; top:0px;}
25% {background-color:yellow; left:200px; top:0px;}
50% {background-color:blue; left:200px; top:200px;}
75% {background-color:green; left:0px; top:200px;}
100% {background-color:red; left:0px; top:0px;}
}
/* The element to apply the animation to */
div {
width: 100px;
height: 100px;
position: relative;
background-color: red;
animation-name: example;
animation-duration: 4s;
}
Verzögern Sie eine Animation
Die animation-delay
Eigenschaft gibt eine Verzögerung für den Start einer Animation an.
Das folgende Beispiel hat eine Verzögerung von 2 Sekunden, bevor die Animation gestartet wird:
Beispiel
div {
width: 100px;
height: 100px;
position: relative;
background-color: red;
animation-name: example;
animation-duration: 4s;
animation-delay: 2s;
}
Auch negative Werte sind erlaubt. Wenn Sie negative Werte verwenden, beginnt die Animation so, als ob sie bereits N Sekunden lang abgespielt worden wäre.
Im folgenden Beispiel beginnt die Animation so, als ob sie bereits 2 Sekunden lang abgespielt worden wäre:
Beispiel
div {
width: 100px;
height: 100px;
position: relative;
background-color: red;
animation-name: example;
animation-duration: 4s;
animation-delay: -2s;
}
Legen Sie fest, wie oft eine Animation ausgeführt werden soll
Die animation-iteration-count
Eigenschaft gibt an, wie oft eine Animation ausgeführt werden soll.
Im folgenden Beispiel wird die Animation dreimal ausgeführt, bevor sie stoppt:
Beispiel
div {
width: 100px;
height: 100px;
position: relative;
background-color: red;
animation-name: example;
animation-duration: 4s;
animation-iteration-count: 3;
}
Das folgende Beispiel verwendet den Wert "infinite", um die Animation endlos fortzusetzen:
Beispiel
div {
width: 100px;
height: 100px;
position: relative;
background-color: red;
animation-name: example;
animation-duration: 4s;
animation-iteration-count:
infinite;
}
Animation in umgekehrter Richtung oder in alternativen Zyklen ausführen
Die animation-direction
Eigenschaft gibt an, ob eine Animation vorwärts, rückwärts oder abwechselnd abgespielt werden soll.
Die Eigenschaft animation-direction kann die folgenden Werte haben:
normal
- Die Animation wird normal abgespielt (vorwärts). Dies ist Standardreverse
- Die Animation wird in umgekehrter Richtung (rückwärts) abgespieltalternate
- Die Animation wird zuerst vorwärts abgespielt, dann rückwärtsalternate-reverse
- Die Animation wird zuerst rückwärts, dann vorwärts abgespielt
Im folgenden Beispiel wird die Animation in umgekehrter Richtung (rückwärts) ausgeführt:
Beispiel
div {
width: 100px;
height: 100px;
position: relative;
background-color: red;
animation-name: example;
animation-duration: 4s;
animation-direction:
reverse;
}
Das folgende Beispiel verwendet den Wert "alternate", um die Animation zuerst vorwärts und dann rückwärts laufen zu lassen:
Beispiel
div {
width: 100px;
height: 100px;
position: relative;
background-color: red;
animation-name: example;
animation-duration: 4s;
animation-iteration-count: 2;
animation-direction:
alternate;
}
Das folgende Beispiel verwendet den Wert "alternate-reverse", um die Animation zuerst rückwärts und dann vorwärts laufen zu lassen:
Beispiel
div {
width: 100px;
height: 100px;
position: relative;
background-color: red;
animation-name: example;
animation-duration: 4s;
animation-iteration-count: 2;
animation-direction:
alternate-reverse;
}
Geben Sie die Geschwindigkeitskurve der Animation an
Die animation-timing-function
Eigenschaft gibt den Geschwindigkeitsverlauf der Animation an.
Die Eigenschaft animation-timing-function kann die folgenden Werte haben:
ease
- Gibt eine Animation mit einem langsamen Start, dann schnell und dann langsamem Ende an (dies ist die Standardeinstellung)linear
- Gibt eine Animation mit der gleichen Geschwindigkeit von Anfang bis Ende anease-in
- Gibt eine Animation mit langsamem Start anease-out
- Gibt eine Animation mit einem langsamen Ende anease-in-out
- Gibt eine Animation mit langsamem Start und Ende ancubic-bezier(n,n,n,n)
- Lässt Sie Ihre eigenen Werte in einer kubischen Bezier-Funktion definieren
Das folgende Beispiel zeigt einige der verschiedenen Geschwindigkeitskurven, die verwendet werden können:
Beispiel
#div1 {animation-timing-function: linear;}
#div2
{animation-timing-function: ease;}
#div3 {animation-timing-function:
ease-in;}
#div4 {animation-timing-function: ease-out;}
#div5
{animation-timing-function: ease-in-out;}
Geben Sie den Füllmodus für eine Animation an
CSS-Animationen wirken sich nicht auf ein Element aus, bevor der erste Keyframe wiedergegeben wird oder nachdem der letzte Keyframe wiedergegeben wird. Die Eigenschaft animation-fill-mode kann dieses Verhalten überschreiben.
Die animation-fill-mode
Eigenschaft gibt einen Stil für das Zielelement an, wenn die Animation nicht abgespielt wird (bevor sie beginnt, nachdem sie endet oder beides).
Die Eigenschaft animation-fill-mode kann die folgenden Werte haben:
none
- Standardwert. Die Animation wendet vor oder nach der Ausführung keine Stile auf das Element anforwards
- Das Element behält die Stilwerte, die durch das letzte Schlüsselbild festgelegt wurden (abhängig von der Animationsrichtung und der Anzahl der Animationsiterationen)backwards
- Das Element erhält die Stilwerte, die vom ersten Schlüsselbild festgelegt werden (abhängig von der Animationsrichtung), und behält diese während der Animationsverzögerungszeit beiboth
- Die Animation folgt den Regeln für vorwärts und rückwärts und erweitert die Animationseigenschaften in beide Richtungen
Im folgenden Beispiel behält das <div>-Element die Stilwerte des letzten Keyframes bei, wenn die Animation endet:
Beispiel
div {
width: 100px;
height: 100px;
background: red;
position: relative;
animation-name: example;
animation-duration: 3s;
animation-fill-mode: forwards;
}
Im folgenden Beispiel erhält das <div>-Element die vom ersten Schlüsselbild festgelegten Stilwerte, bevor die Animation beginnt (während der Animationsverzögerung):
Beispiel
div {
width: 100px;
height: 100px;
background: red;
position: relative;
animation-name: example;
animation-duration: 3s;
animation-delay: 2s;
animation-fill-mode: backwards;
}
Im folgenden Beispiel erhält das <div>-Element die vom ersten Schlüsselbild festgelegten Stilwerte, bevor die Animation beginnt, und behält die Stilwerte vom letzten Schlüsselbild bei, wenn die Animation endet:
Beispiel
div {
width: 100px;
height: 100px;
background: red;
position: relative;
animation-name: example;
animation-duration: 3s;
animation-delay: 2s;
animation-fill-mode: both;
}
Animations-Kurzschrift-Eigenschaft
Das folgende Beispiel verwendet sechs der Animationseigenschaften:
Beispiel
div
{
animation-name: example;
animation-duration: 5s;
animation-timing-function: linear;
animation-delay: 2s;
animation-iteration-count: infinite;
animation-direction: alternate;
}
Derselbe Animationseffekt wie oben kann durch Verwendung der Kurzschrifteigenschaft erzielt werden
animation
:
Beispiel
div
{
animation: example 5s linear 2s infinite alternate;
}
CSS-Animationseigenschaften
Die folgende Tabelle listet die @keyframes-Regel und alle CSS-Animationseigenschaften auf:
Property | Description |
---|---|
@keyframes | Specifies the animation code |
animation | A shorthand property for setting all the animation properties |
animation-delay | Specifies a delay for the start of an animation |
animation-direction | Specifies whether an animation should be played forwards, backwards or in alternate cycles |
animation-duration | Specifies how long time an animation should take to complete one cycle |
animation-fill-mode | Specifies a style for the element when the animation is not playing (before it starts, after it ends, or both) |
animation-iteration-count | Specifies the number of times an animation should be played |
animation-name | Specifies the name of the @keyframes animation |
animation-play-state | Specifies whether the animation is running or paused |
animation-timing-function | Specifies the speed curve of the animation |