Eine *Easing-Funktion* in CSS steuert, wie eine Animation während ihrer Dauer beschleunigt und abbremst. Die Keywords ease, ease-in, ease-out und ease-in-out sind Abkürzungen für vier feste Kurven. Für alles darüber hinaus gibt es cubic-bezier() - eine Funktion mit vier Zahlen, die eine eigene Kurve zeichnet.
Diese vier Zahlen sind die Koordinaten von zwei Kontrollpunkten (x1, y1, x2, y2). Per Hand sind sie unhandlich, weil kleine Änderungen große visuelle Effekte haben und Überschwinger *bouncy*-Bewegungen erzeugen, die man den Zahlen nicht ansieht. Ein visueller Editor lässt dich Handles ziehen und die Kurve reagieren sehen - viel schneller als Dezimalstellen zu tippen.
Coddys Editor zeichnet die Kurve live, animiert eine Vorschau-Kugel mit deinem Easing und bietet Presets für gängige Muster: die CSS-Keywords, die *Standard*-Kurve aus Material Design, ein bouncy-out und ein anticipate/overshoot. Den resultierenden cubic-bezier()-String kopieren und ins CSS einfügen - alles im Browser.
Was du über cubic-bezier-Easing wissen solltest
Die Kurve trägt *Fortschritt* gegen *Zeit* auf. Zeit verläuft links→rechts (0 → 1); Fortschritt unten→oben (0 → 1). Die gerade Diagonale ist linear - konstanter Fortschritt pro Zeiteinheit.
Die X-Koordinaten beider Kontrollpunkte sind auf 0..1 begrenzt. Die Y-Werte dürfen unter 0 oder über 1 - so entstehen Bounce, Anticipate und Overshoot (Animation schießt übers Ziel oder geht kurz rückwärts).
*Ease-out*-Kurven (Großteil des Fortschritts früh) wirken reaktionsschnell - gut für Entries und Button-Reaktionen. *Ease-in*-Kurven (Fortschritt spät) wirken zäh - meist falsch im UI, aber sinnvoll für Exits.
So baust du ein cubic-bezier-Easing
1
Mit einem Preset starten
Wähle ein Preset nahe am gewünschten Gefühl. *Material Standard* und *Bouncy out* eignen sich gut für UI; *ease-out* ist der sichere Default für Entry-Animationen.
2
Die beiden Handles ziehen
Die farbigen Kreise sind die Kontrollpunkte. Den ersten ziehen, um den *Start* zu tunen; den zweiten, um das *Ende* zu tunen. Über die obere Kante hinaus zu ziehen erzeugt Overshoot.
3
Dauer wählen und replay
Wähle eine realistische Dauer. UI-Transitions 150–300ms; Emphasis-Bewegungen 400–600ms. *Replay* spielt die Vorschau erneut ab.
4
Mit Zahleneingaben feintunen
Für exakte Werte in die Felder X1/Y1/X2/Y2 tippen. Y kann unter 0 oder über 1 - X bleibt in 0..1.
5
CSS kopieren
*Kopieren* drücken, um die komplette transition-Regel zu erhalten. In dein Stylesheet einfügen und transform durch die zu animierende Eigenschaft ersetzen.
cubic-bezier-Kurzreferenz
Übliche Easings und die cubic-bezier-Werte dahinter. Die vier Keywords sind Aliasnamen konkreter Kurven.
Easing
cubic-bezier-Werte
Wann verwenden
ease
(0.25, 0.1, 0.25, 1)
Default in transition - sanft, aber generisch
linear
(0, 0, 1, 1)
Konstante Geschwindigkeit - meist falsch im UI, richtig für Spinner
ease-in
(0.42, 0, 1, 1)
Langsamer Start, schnelles Ende - am besten für Exits
ease-out
(0, 0, 0.58, 1)
Schneller Start, langsames Ende - am besten für Entries und Reaktionen
ease-in-out
(0.42, 0, 0.58, 1)
Symmetrisch - gut für Hin-und-Her-Toggles
Material Standard
(0.4, 0, 0.2, 1)
Moderne, knackige UI-Bewegung
Bouncy out
(0.18, 0.89, 0.32, 1.28)
Schießt übers Ziel und schwingt aus - verspielte Entries
Negatives Y1 lässt die Animation kurz in die *Gegenrichtung* gehen, bevor sie ihr Ziel ansteuert. Klassischer Animator-Trick - eine kleine Anticipation lässt die Hauptbewegung gewollt wirken.
Häufige Easing-Fehler
ease-in für Entries verwenden. Startet langsam, endet schnell - das Gegenteil von reaktiv. Stattdessen ease-out.
linear für UI wählen, weil es "neutral" wirkt. Konstante Geschwindigkeit sieht mechanisch aus; richtig für Fortschrittsbalken und Spinner, selten sonst.
Overshoot überall einsetzen. Bouncy-Easings sind ein Akzent, kein Default - überall angewendet wirken sie chaotisch.
FAQ Cubic-Bezier
Was bedeuten die vier Zahlen in cubic-bezier()?
Sie sind die x- und y-Koordinaten von zwei Kontrollpunkten: cubic-bezier(x1, y1, x2, y2). Der erste Punkt formt den *Start*, der zweite das *Ende*. X bleibt zwischen 0 und 1 (Zeit); Y darf außerhalb von 0..1 sein (Fortschritt, für Overshoot/Anticipate).
Welches Easing nehme ich für UI-Animationen?
Für Entries (etwas erscheint) und Reaktionen (Hover, Focus) *ease-out* oder Material-Standard cubic-bezier(0.4, 0, 0.2, 1). Für Exits passt *ease-in*. *linear* nur für Fortschrittsanzeigen.
Was ist der Unterschied zwischen ease und ease-out?
Beide enden langsam, aber ease startet ebenfalls weich. ease-out startet sofort mit voller Geschwindigkeit und bremst ab - diese *sofortige* Bewegung wirkt reaktiver als ease.
Wie baue ich eine bouncy Animation in CSS?
Zieh das zweite Handle über die obere Kante (Y2 > 1). Beispiel: cubic-bezier(0.18, 0.89, 0.32, 1.28) schießt ~28 % übers Ziel und schwingt zurück. Für mehrere Bounces brauchst du @keyframes oder eine Spring-Bibliothek - cubic-bezier kann nur einmal übers Ziel hinaus.
Kann ich cubic-bezier mit @keyframes-Animationen kombinieren?
Ja. Als animation-timing-function im Shorthand animation oder pro Keyframe. Bei mehrstufigen Bewegungen kannst du zwischen jeden Keyframe-Paaren ein anderes Easing setzen.