CSS Transition
Eine CSS Transition sorgt dafür, dass sich CSS-Eigenschaften nicht abrupt, sondern fliessend über eine bestimmte Zeit ändern.
Dabei werden die dazwischenliegenden Werte interpoliert – es entsteht ein berechneter Übergang zwischen zwei Zuständen eines Elements, der meist durch eine Benutzeraktion wie :hover oder :focus ausgelöst wird.
Syntax
Ohne Transition: Farbe springt sofort von rot zu blau.
div {
background-color: red;
}
div:hover {
background-color: blue;
}
Mit transition: Farbe ändert sich weich über 0,5 Sekunden.
Die Eigenschaft transition ist eine Kurzschreibweise.
div {
background-color: red;
transition: background-color 0.5s;
}
div:hover {
background-color: blue;
}
Wichtig: Die transition wird immer im Ausgangszustand definiert, nicht im :hover-Zustand.
Die 4 Transition-Eigenschaften
Eine Transition besteht aus diesen vier Bausteinen:
transition-propertyWelche CSS-Eigenschaft animiert wirdtransition-durationWie lange die Animation dauerttransition-timing-functionWie sich die Geschwindigkeit über die Zeit verhälttransition-delayWann die Animation startet
1. transition-property
Welche CSS-Eigenschaft soll animiert werden?
transition-property: background-color;
Mehrere Werte können mit Kommas getrennt angegeben werden.
transition-property: width, height;
Alle Werte werden animiert
transition-property: all;
2. transition-duration
Wie lange dauert die Animation? Wichtig: Ohne duration → keine sichtbare Animation!
transition-duration: 0.3s;
/* oder */
transition-duration: 300ms;
3. transition-timing-function
linearkonstante Geschwindigkeit von Anfang bis EndeeaseStandard: sanfter Start, nimmt schnell Geschwindigkeit auf und endet langsamease-inlangsam starten, endet schnellease-outschneller Start, endet langsamease-in-outlangsam starten & enden, in der Mitte ist die Geschwindigkeit am höchstencubic-bezier()komplett individuell cubic-bezier Generator
Timing Functions Demo
Ease
Ease In
Ease Out
Ease In Out
Linear
Custom
Hover on me
4. transition-delay
Wann startet die Transition? Ohne Angabe wird sofort gestartet.
Die Animation beginnt 0,2 Sekunden später.
transition-delay: 0.2s;
Kurzschreibweise
Alles kann in einer Zeile unter dem Begriff transition geschrieben werden. Damit gewinnst du Übersicht.
transition: background-color 0.5s ease-in-out 0.1s;
Reihenfolge beachten
property | duration | timing-function | delay
Mehrere Transitionen:
transition:
width 0.3s ease,
background-color 0.5s linear;
Was kann man animieren?
Fast alle CSS Eigenschaften, die eine Farb-, Länge- oder Positions-Komponente haben, können Transition anwenden.
Gut animierbar sind zum Beispiel:
colorbackground-coloropacitytransformbox-shadowborder-radius
background-color, background-image, background-position, border-color, border-width, border-spacing, color, crop, font-size, font-weight, height, width, letter-spacing, line-height, margin, max-height, max-width, min-height, min-width, opacity, outline-color, outline-offset, outline-width, padding, text-indent, text-shadow, vertical-align, visibility, word-spacing, z-index, zoom
Transition reagiert auf Zustände
Transitions funktionieren, wenn sich ein Zustand ändert. Zum Beispiel bei :hover, :focus, :active
a {
transition: transform 0.3s ease;
}
a:hover {
transform: scale(1.1);
}
Kurz gesagt
transitionmacht Zustandsänderungen fliessend- Ohne
durationkeine sichtbare Animation timing-functionsteuert die Geschwindigkeitdelayverzögert den Start- Transitions reagieren auf Zustände wie
:hoveroder:focus