1. Was sind CSS-Animationen?
Mit CSS können HTML-Elemente bewegt, gedreht, vergrößert oder farblich verändert werden.
Animationen können die Benutzeroberfläche verständlicher und ansprechender gestalten. Sie sollten jedoch sparsam eingesetzt werden.
2. transition – Weiche Übergänge
Mit transition können Änderungen von CSS-Eigenschaften weich dargestellt werden.
CSS-Code
.button {
background-color: blue;
transition: background-color 0.3s ease;
}
.button:hover {
background-color: green;
}
Ergebnis
Bewegen Sie den Mauszeiger über die Schaltfläche. Die Hintergrundfarbe verändert sich weich.
3. Aufbau von transition
transition: property duration timing-function delay;
| Bestandteil | Bedeutung |
|---|---|
| property | CSS-Eigenschaft, die animiert werden soll |
| duration | Dauer des Übergangs |
| timing-function | Geschwindigkeitsverlauf |
| delay | Verzögerung vor dem Start |
Beispiel
.box {
transition: transform 0.5s ease 0.2s;
}
Die Transformation dauert 0,5 Sekunden und beginnt nach einer Verzögerung von 0,2 Sekunden.
4. transform – Elemente verändern
Mit transform können Elemente verschoben, gedreht, skaliert oder verzerrt werden.
| Funktion | Beschreibung |
|---|---|
| translate() | Verschiebt ein Element |
| scale() | Vergrößert oder verkleinert ein Element |
| rotate() | Dreht ein Element |
| skew() | Verzerrt ein Element |
5. scale() – Vergrößern und Verkleinern
CSS-Code
.box {
transition: transform 0.3s ease;
}
.box:hover {
transform: scale(1.15);
}
Ergebnis
Beim Überfahren mit der Maus wird die Box um 15 Prozent vergrößert.
6. rotate() – Drehen
CSS-Code
.box:hover {
transform: rotate(15deg);
}
Ergebnis
deg steht für Grad. Positive Winkel drehen im üblichen Koordinatensystem im Uhrzeigersinn.
7. translate() – Verschieben
CSS-Code
.box:hover {
transform: translateY(-15px);
}
Ergebnis
Ein negativer Wert bei translateY() verschiebt das Element nach oben.
8. @keyframes – Eigene Animationen
Mit @keyframes können mehrere Zustände einer Animation definiert werden.
CSS-Code
@keyframes bewegen {
from {
transform: translateX(-35px);
}
to {
transform: translateX(35px);
}
}
.box {
animation: bewegen 2s ease-in-out
infinite alternate;
}
Ergebnis
9. animation – Animation anwenden
Die Eigenschaft animation verbindet mehrere Animationseinstellungen in einer Kurzschreibweise.
.box {
animation: bewegen 2s ease infinite alternate;
}
| Eigenschaft | Beschreibung |
|---|---|
| animation-name | Name der @keyframes-Animation |
| animation-duration | Dauer eines Durchlaufs |
| animation-timing-function | Geschwindigkeitsverlauf |
| animation-delay | Startverzögerung |
| animation-iteration-count | Anzahl der Wiederholungen |
| animation-direction | Richtung der Animation |
| animation-fill-mode | Verhalten vor und nach der Animation |
| animation-play-state | Animation starten oder pausieren |
10. Animation mit Prozentangaben
Anstelle von from und to können Prozentwerte verwendet werden.
CSS-Code
@keyframes farbwechsel {
0% {
background-color: blue;
}
50% {
background-color: green;
}
100% {
background-color: purple;
}
}
Ergebnis
11. Rotierende Animation
CSS-Code
@keyframes drehen {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
.box {
animation: drehen 3s linear infinite;
}
Ergebnis
12. Pulsierende Animation
Eine pulsierende Animation verändert wiederholt die Größe eines Elements.
CSS-Code
@keyframes pulsieren {
0%, 100% {
transform: scale(1);
}
50% {
transform: scale(1.12);
}
}
.box {
animation: pulsieren 1.5s ease-in-out infinite;
}
Ergebnis
13. opacity – Ein- und Ausblenden
Mit opacity kann die Transparenz eines Elements verändert werden.
CSS-Code
@keyframes einblenden {
from {
opacity: 0.2;
}
to {
opacity: 1;
}
}
.box {
animation: einblenden 2s
ease-in-out infinite alternate;
}
Ergebnis
14. animation-timing-function
Die Timing-Funktion bestimmt den Geschwindigkeitsverlauf einer Animation.
| Wert | Bedeutung |
|---|---|
| linear | Gleichmäßige Geschwindigkeit |
| ease | Langsamer Anfang und langsames Ende |
| ease-in | Langsamer Anfang |
| ease-out | Langsames Ende |
| ease-in-out | Langsamer Anfang und langsames Ende |
CSS-Code
.box {
animation-timing-function: ease-in-out;
}
15. animation-direction
Mit animation-direction wird festgelegt, in welcher Richtung eine Animation abläuft.
| Wert | Beschreibung |
|---|---|
| normal | Normale Richtung |
| reverse | Umgekehrte Richtung |
| alternate | Abwechselnd vorwärts und rückwärts |
| alternate-reverse | Abwechselnd rückwärts und vorwärts |
16. animation-iteration-count
Diese Eigenschaft bestimmt die Anzahl der Wiederholungen.
.box {
animation-iteration-count: 3;
}
Mit infinite wird eine Animation unbegrenzt wiederholt.
.box {
animation-iteration-count: infinite;
}
17. Hover-Effekt für Karten
Übergänge können eingesetzt werden, um Karten beim Überfahren mit der Maus hervorzuheben.
CSS-Code
.karte {
transition: transform 0.3s ease,
box-shadow 0.3s ease;
}
.karte:hover {
transform: translateY(-7px);
box-shadow: 0 12px 25px
rgba(0, 0, 0, 0.15);
}
Ergebnis
CSS lernen
Bewegen Sie die Maus über diese Karte.
18. Ladeanimation – Loading Spinner
Eine Ladeanimation kann anzeigen, dass eine Anwendung gerade Daten verarbeitet.
CSS-Code
@keyframes drehen {
to {
transform: rotate(360deg);
}
}
.loader {
width: 65px;
height: 65px;
border: 7px solid lightblue;
border-top-color: blue;
border-radius: 50%;
animation: drehen 1s linear infinite;
}
Ergebnis
19. Interaktives Beispiel: Animation steuern
Mit JavaScript kann die Wiedergabe einer CSS-Animation beeinflusst werden.
Animation läuft.
JavaScript-Code
function pauseAnimation() {
const box = document.getElementById("box");
box.style.animationPlayState = "paused";
}
20. Fortschrittsanzeige
Eine animierte Fortschrittsleiste kann den Verlauf eines Vorgangs veranschaulichen.
CSS-Code
@keyframes fortschritt {
from {
width: 0;
}
to {
width: 100%;
}
}
.balken {
animation: fortschritt 4s linear infinite;
}
Ergebnis
21. Barrierefreiheit bei Animationen
Manche Menschen reagieren empfindlich auf starke Bewegungen und Animationen.
Mit prefers-reduced-motion können entsprechende Systemeinstellungen berücksichtigt werden.
CSS-Code
@media (prefers-reduced-motion: reduce) {
.animation {
animation: none;
transition: none;
}
}
Die Beispiele auf dieser Seite berücksichtigen diese Einstellung.
22. Praktische Übungen
Aufgabe 1
Welche CSS-Eigenschaft erzeugt weiche Übergänge?
Lösung anzeigen
transition
Aufgabe 2
Erstellen Sie einen Farbwechsel mit einer Dauer von 0,5 Sekunden.
Lösung anzeigen
.button {
background: blue;
transition: background-color 0.5s;
}
.button:hover {
background: green;
}
Aufgabe 3
Vergrößern Sie eine Box beim Hover um 20 Prozent.
Lösung anzeigen
.box:hover {
transform: scale(1.2);
}
Aufgabe 4
Drehen Sie ein Element um 45 Grad.
Lösung anzeigen
.box {
transform: rotate(45deg);
}
Aufgabe 5
Verschieben Sie ein Element 20px nach rechts.
Lösung anzeigen
.box {
transform: translateX(20px);
}
Aufgabe 6
Erstellen Sie eine Animation, die ein Element von links nach rechts bewegt.
Lösung anzeigen
@keyframes bewegen {
from {
transform: translateX(0);
}
to {
transform: translateX(100px);
}
}
Aufgabe 7
Lassen Sie eine Animation unbegrenzt wiederholen.
Lösung anzeigen
.box {
animation-iteration-count: infinite;
}
Aufgabe 8
Welche Einstellung sorgt dafür, dass eine Animation abwechselnd vorwärts und rückwärts läuft?
Lösung anzeigen
animation-direction: alternate;
Aufgabe 9
Wie kann eine CSS-Animation pausiert werden?
Lösung anzeigen
animation-play-state: paused;
Aufgabe 10
Welche Media Query berücksichtigt reduzierte Bewegungen?
Lösung anzeigen
@media (prefers-reduced-motion: reduce) {
.box {
animation: none;
}
}
23. Zusammenfassung
Mit transition werden CSS-Eigenschaften weich verändert. Mit transform können Elemente verschoben, gedreht oder skaliert werden.
Mit @keyframes werden Animationsabläufe definiert. Die Eigenschaft animation bestimmt unter anderem Dauer, Geschwindigkeit und Wiederholungen.
Animationen sollten die Bedienbarkeit unterstützen und Einstellungen zur Reduzierung von Bewegungen berücksichtigen.