CSS Animationen & Transitionen

6 Kernkonzepte
Die wichtigsten Konzepte für CSS-Animationen und Transitionen: transition · transform · @keyframes · animation · easing · delay CSS-Animationen bringen Webseiten zum Leben. Mit Transitionen und Keyframe-Animationen können Sie flüssige Übergänge und komplexe Bewegungen erzeugen – ganz ohne JavaScript.

transition – Sanfte Übergänge

transition: property duration easing delay
.button { transition: background-color 0.3s ease, transform 0.2s; } .button:hover { background-color: #ff6b6b; transform: scale(1.05); }

transition ermöglicht sanfte Übergänge zwischen Zuständen (z.B. Hover, Fokus). Sie definieren, welche Eigenschaft wie lange und mit welcher Kurve animiert wird.

Transition-Eigenschaften

Eigenschaft Beschreibung Beispiel
transition-property Welche Eigenschaft animiert wird all, background-color, transform
transition-duration Dauer der Animation 0.3s, 300ms
transition-timing-function Beschleunigungskurve ease, linear, ease-in-out
transition-delay Verzögerung vor Start 0.2s, 200ms
Beispiele
/* Einfache Transition für alle Eigenschaften */
.box {
transition: all 0.4s ease;
}
/* Mehrere Eigenschaften separat */
.card {
transition:
opacity 0.3s,
transform 0.5s cubic-bezier(0.4, 0, 0.2, 1);
}
/* Mit Verzögerung */
.delayed {
transition: all 0.3s ease 0.2s;
}
Tipp: Vermeiden Sie transition: all in Produktionscode, da dies alle Eigenschaften animiert und die Performance beeinträchtigen kann. Nennen Sie stattdessen nur die benötigten Eigenschaften.

transform – Elemente verändern

transform: translate() rotate() scale()
.box { transform: translate(50px, 20px) rotate(45deg) scale(1.2); } .box:hover { transform: scale(1.1) rotate(10deg); }

transform verändert die Darstellung von Elementen – sie können verschoben, gedreht, skaliert oder verzerrt werden. Transform arbeitet im eigenen Koordinatensystem und beeinflusst das Layout nicht.

Transform-Funktionen

Funktion Beschreibung Beispiel
translate(x, y) Verschiebung translate(50px, 20px)
scale(x, y) Skalierung (x,y) scale(1.5, 1.5)
rotate(deg) Drehung (Grad) rotate(45deg)
skew(x, y) Verzerrung skew(10deg, 5deg)
translateX(x) Horizontal verschieben translateX(50px)
translateY(y) Vertikal verschieben translateY(20px)
scaleX(x) Horizontal skalieren scaleX(0.5)
scaleY(y) Vertikal skalieren scaleY(1.5)
rotateX(deg) 3D-Drehung um X-Achse rotateX(30deg)
rotateY(deg) 3D-Drehung um Y-Achse rotateY(30deg)
Beispiele
/* Zentrierung mit transform */
.center {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
/* Card mit Hover-Effekt */
.card {
transition: transform 0.3s ease;
transform: scale(1);
}
.card:hover {
transform: scale(1.05) rotate(2deg);
}
Tipp: Für flüssige Animationen verwenden Sie transform und opacity – diese Eigenschaften werden von der GPU beschleunigt und sind performanter als left, top oder width.

@keyframes – Animationsabläufe definieren

@keyframes name { from { ... } to { ... } }
@keyframes slideIn { from { transform: translateX(-100%); opacity: 0; } to { transform: translateX(0); opacity: 1; } } .element { animation: slideIn 0.5s ease; }

@keyframes definiert den Ablauf einer Animation mit Schlüsselbildern (Keyframes). Sie können from und to oder Prozentwerte (0%, 50%, 100%) verwenden.

Beispiele
/* Pulsierende Animation */
@keyframes pulse {
0% { transform: scale(1); }
50% { transform: scale(1.1); }
100% { transform: scale(1); }
}
/* Mehrere Eigenschaften */
@keyframes fadeInUp {
0% {
opacity: 0;
transform: translateY(30px);
}
100% {
opacity: 1;
transform: translateY(0);
}
}
/* Farbwechsel mit mehreren Schritten */
@keyframes rainbow {
0% { background: #ff6b6b; }
25% { background: #feca57; }
50% { background: #48dbfb; }
75% { background: #1dd1a1; }
100% { background: #ff6b6b; }
}
Tipp: Verwenden Sie Prozentwerte für komplexere Animationen mit mehreren Zwischenschritten. from und to sind Kurzformen für 0% und 100%.

animation – Keyframes anwenden

animation: name duration easing delay count direction
.element { animation: slideIn 0.6s ease 0.2s 2 alternate; } /* Langform */ .element { animation-name: slideIn; animation-duration: 0.6s; animation-timing-function: ease; animation-delay: 0.2s; animation-iteration-count: 2; animation-direction: alternate; }

animation wendet eine @keyframes-Animation auf ein Element an. Sie steuert Dauer, Verzögerung, Wiederholungen und die Richtung der Animation.

Animation-Eigenschaften

Eigenschaft Beschreibung Beispiel
animation-name Name der @keyframes-Animation slideIn
animation-duration Dauer der Animation 0.6s, 600ms
animation-timing-function Beschleunigungskurve ease, linear, ease-in-out
animation-delay Verzögerung vor Start 0.2s
animation-iteration-count Wiederholungen 1, 3, infinite
animation-direction Richtung der Animation normal, reverse, alternate
animation-fill-mode Zustand vor/nach Animation forwards, backwards, both
animation-play-state Pausieren/Abspielen running, paused
Beispiele
/* Unendliche Animation */
.loader {
animation: spin 1s linear infinite;
}
/* Mit Verzögerung und alternierender Richtung */
.element {
animation: slide 0.8s ease-out 0.3s 3 alternate;
}
/* Fill-Mode: Endzustand beibehalten */
.fade-in {
animation: fadeIn 0.5s ease forwards;
}
/* Animation pausieren */
.paused {
animation-play-state: paused;
}
Tipp: Verwenden Sie infinite für Endlosschleifen wie Lade-Animationen. Mit forwards bleibt das Element im Endzustand der Animation.

Easing – Beschleunigungskurven

ease · linear · ease-in · ease-out · cubic-bezier()
.element { transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1); } /* Vordefinierte Werte */ ease, linear, ease-in, ease-out, ease-in-out

Easing-Funktionen definieren die Beschleunigung einer Animation. Sie steuern, ob eine Bewegung gleichmäßig (linear), langsam startend (ease-in) oder langsam endend (ease-out) verläuft.

Die wichtigsten Easing-Funktionen

Funktion Beschreibung cubic-bezier()
linear Gleichmäßige Bewegung cubic-bezier(0, 0, 1, 1)
ease Standard (sanft starten & enden) cubic-bezier(0.25, 0.1, 0.25, 1)
ease-in Langsam starten, schnell enden cubic-bezier(0.42, 0, 1, 1)
ease-out Schnell starten, langsam enden cubic-bezier(0, 0, 0.58, 1)
ease-in-out Langsam starten und enden cubic-bezier(0.42, 0, 0.58, 1)
cubic-bezier() Benutzerdefinierte Kurve cubic-bezier(0.4, 0, 0.2, 1)
Beispiele
/* Verschiedene Easing-Stile */
.box-linear { transition: all 0.5s linear; }
.box-ease-in { transition: all 0.5s ease-in; }
.box-ease-out { transition: all 0.5s ease-out; }
.box-bounce {
transition: all 0.8s cubic-bezier(0.68, -0.55, 0.265, 1.55);
}
/* Animation mit benutzerdefinierter Kurve */
.custom {
animation: slide 0.6s cubic-bezier(0.4, 0, 0.2, 1);
}
Tipp: Für natürliche Bewegungen verwenden Sie ease-out oder ease-in-out. cubic-bezier(0.68, -0.55, 0.265, 1.55) erzeugt einen "Bounce"-Effekt (Überschwingen).

Praktische Beispiele – Fertige Animationen

hover · loader · slide · fade
.button { transition: all 0.3s ease; } .button:hover { transform: scale(1.1); box-shadow: 0 8px 16px rgba(0,0,0,0.3); }

Praktische Beispiele zeigen, wie Sie Animationen für Hover-Effekte, Ladeanimationen und Übergänge einsetzen können.

Beispiele
/* Button mit Hover-Animation */
.btn {
padding: 12px 24px;
background: #3498db;
color: #fff;
border: none;
border-radius: 8px;
transition: all 0.3s ease;
}
.btn:hover {
transform: scale(1.05);
background: #2980b9;
box-shadow: 0 4px 12px rgba(52,152,219,0.4);
}
/* Lade-Spinner */
@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
.spinner {
width: 40px;
height: 40px;
border: 4px solid #e0e0e0;
border-top-color: #3498db;
border-radius: 50%;
animation: spin 0.8s linear infinite;
}
/* Slide-in von unten */
@keyframes slideUp {
0% { opacity: 0; transform: translateY(30px); }
100% { opacity: 1; transform: translateY(0); }
}
.card { animation: slideUp 0.5s ease forwards; }
Tipp: Für Ladeanimationen verwenden Sie infinite. Für Hover-Effekte reichen transition und transform – sie sind leicht zu implementieren und performant.

CSS Animationen & Transitionen im Überblick

transition Sanfte Übergänge
Zustandsänderungen (hover, focus)
transform Elemente verändern
translate, rotate, scale
@keyframes Animationsablauf
Schlüsselbilder (0% – 100%)
animation Keyframes anwenden
Dauer, Delay, Iteration
easing Beschleunigungskurven
ease, linear, cubic-bezier
GPU Hardware-Beschleunigung
transform, opacity

Quick Summary

transition
Sanfte Übergänge
transform
Elemente verändern
@keyframes
Animationsablauf
animation
Keyframes anwenden
ease
Easing-Funktionen
hover
Praktische Beispiele
transition: all 0.3s ease · transform: scale(1.1) rotate(5deg) · animation: slideIn 0.5s ease forwards