CSS – Animationen und Übergänge

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.

Merken: Die wichtigsten Techniken sind transition, transform, @keyframes und animation.

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

Hover

Beim Überfahren mit der Maus wird die Box um 15 Prozent vergrößert.


6. rotate() – Drehen

CSS-Code

.box:hover {
    transform: rotate(15deg);
}

Ergebnis

Drehen

deg steht für Grad. Positive Winkel drehen im üblichen Koordinatensystem im Uhrzeigersinn.


7. translate() – Verschieben

CSS-Code

.box:hover {
    transform: translateY(-15px);
}

Ergebnis

Bewegen

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

Bewegung
Merken: from entspricht 0%. to entspricht 100%.

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

Farben

11. Rotierende Animation

CSS-Code

@keyframes drehen {
    from {
        transform: rotate(0deg);
    }

    to {
        transform: rotate(360deg);
    }
}

.box {
    animation: drehen 3s linear infinite;
}

Ergebnis

CSS

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

Pulsieren

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

Opacity

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;
}
Praxis: ease-in-out wird häufig für natürliche Bewegungen in Benutzeroberflächen verwendet.

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

Animation läuft.

JavaScript-Code

function pauseAnimation() {
    const box = document.getElementById("box");
    box.style.animationPlayState = "paused";
}
Hinweis: CSS übernimmt die Animation. JavaScript verändert lediglich ihre Steuerung.

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

Wichtig: Dieses Beispiel zeigt nur eine dekorative Animation. Ein echter Ladefortschritt muss mit dem tatsächlichen Bearbeitungsstand verbunden sein.

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.