transition
CSS-Transitions machen Zustandswechsel sanft und flüssig. Statt einem harten Sprung von Farbe A zu Farbe B interpoliert der Browser die Werte über eine definierte Zeit. Die transition-Eigenschaft ist eine Kurzschreibweise für vier Untereigenschaften: transition-property (was wird animiert), transition-duration (wie lange dauert es), transition-timing-function (Beschleunigungskurve) und transition-delay (Wartezeit vor Start). Transitions brauchen immer einen Trigger wie Hover, Focus oder eine Klassen-Änderung via JavaScript, sie laufen nicht automatisch beim Laden der Seite.
- Syntax
- transition: <property> <duration> <timing-function> <delay>
- Initialwert
- all 0s ease 0s
- Vererbt
- Nein
- Animierbar
- Nein
- Kurzform für
- transition-property, transition-duration, transition-timing-function, transition-delay
- Kategorie
- Animationen
- Werte
- 14
- Beispiele
- 5
- Browser
- 5 von 5
- 2 von 5
- Stand
- 15.02.2026
Grundlagen
Transitions brauchen einen Trigger wie :hover, :focus oder eine Klassen-Änderung per JavaScript, sie laufen nicht automatisch. Nur animierbare Properties funktionieren: Farben, Längen, Transformationen und Opazität lassen sich interpolieren. Properties wie display, font-family oder visibility springen hart um, weil der Browser keine Zwischenwerte berechnen kann.
Performance-Tipp: transform und opacity sind GPU-beschleunigt und butterweich. Layout-Änderungen wie width, height oder margin lösen Reflows aus und können ruckeln, besonders bei vielen Elementen. Wenn du kannst, animiere mit transform: scale() statt width.
Wichtig: Setze die Transition auf dem Ausgangszustand, nicht auf :hover. Sonst funktioniert die Rück-Animation nicht, weil die Transition-Definition verschwindet, sobald der Hover endet. Mit transition auf dem Basis-Element animiert der Browser sowohl hin als auch zurück.
Syntax & Werte
14 Wertetransition-property
transition-duration
transition-timing-function
transition-delay
Beispiele
5 BeispieleFünf Boxen mit unterschiedlichen Timing-Funktionen bewegen sich beim Hover nach rechts. So siehst du direkt, wie sich ease, linear, ease-in, ease-out und ease-in-out unterscheiden.
.timing-box {
transition: transform 1.5s;
}
.timing-demo:hover .t-ease {
transform: translateX(120px);
transition-timing-function: ease;
}
.timing-demo:hover .t-linear {
transform: translateX(120px);
transition-timing-function: linear;
}<div class="timing-demo">
<p style="margin:0 0 8px;color:#64748b">Hover über den gesamten Bereich:</p>
<div class="timing-track"><div class="timing-box t-ease">ease</div></div>
<div class="timing-track"><div class="timing-box t-linear">linear</div></div>
<div class="timing-track"><div class="timing-box t-ease-in">ease-in</div></div>
<div class="timing-track"><div class="timing-box t-ease-out">ease-out</div></div>
<div class="timing-track"><div class="timing-box t-ease-in-out">ease-in-out</div></div>
</div> Eine Card hebt sich beim Hover an, bekommt einen Schatten und ändert die Hintergrundfarbe. Jede Property hat ihre eigene Transition-Dauer und Delay für einen mehrschichtigen Effekt.
.demo-card {
transition:
transform 0.3s ease,
box-shadow 0.3s ease 0.05s,
background-color 0.3s ease;
}
.demo-card:hover {
transform: translateY(-4px);
box-shadow: 0 8px 20px rgba(0,0,0,0.12);
background: white;
}<div class="card-demo">
<div class="demo-card">
<h3>Projekt-Card</h3>
<p>Hover für einen sanften Lift-Effekt mit mehreren Transitions.</p>
</div>
</div>