animation-timing-function
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.
Die animation-timing-function CSS Eigenschaft legt fest, wie eine Animation während der Dauer jedes Zyklus voranschreitet.
Probieren Sie es aus
animation-timing-function: linear;
animation-timing-function: ease-in-out;
animation-timing-function: steps(5, end);
animation-timing-function: cubic-bezier(0.1, -0.6, 0.2, 0);
<section class="flex-column" id="default-example">
<div class="animating" id="example-element"></div>
<button id="play-pause">Play</button>
</section>
#example-element {
animation-duration: 3s;
animation-iteration-count: infinite;
animation-name: slide;
animation-play-state: paused;
background-color: #1766aa;
border-radius: 50%;
border: 5px solid #333333;
color: white;
height: 150px;
margin: auto;
margin-left: 0;
width: 150px;
}
#example-element.running {
animation-play-state: running;
}
#play-pause {
font-size: 2rem;
}
@keyframes slide {
from {
background-color: orange;
color: black;
margin-left: 0;
}
to {
background-color: orange;
color: black;
margin-left: 80%;
}
}
const el = document.getElementById("example-element");
const button = document.getElementById("play-pause");
button.addEventListener("click", () => {
if (el.classList.contains("running")) {
el.classList.remove("running");
button.textContent = "Play";
} else {
el.classList.add("running");
button.textContent = "Pause";
}
});
Es ist oft praktisch, die Kurzform-Eigenschaft animation zu verwenden, um alle Animationseigenschaften auf einmal festzulegen.
Syntax
/* Keyword values */
animation-timing-function: ease;
animation-timing-function: ease-in;
animation-timing-function: ease-out;
animation-timing-function: ease-in-out;
animation-timing-function: linear;
animation-timing-function: step-start;
animation-timing-function: step-end;
/* cubic-bezier() function values */
animation-timing-function: cubic-bezier(0.42, 0, 1, 1); /* ease-in */
animation-timing-function: cubic-bezier(0, 0, 0.58, 1); /* ease-out */
animation-timing-function: cubic-bezier(0.42, 0, 0.58, 1); /* ease-in-out */
/* linear() function values */
animation-timing-function: linear(0, 0.25, 1);
animation-timing-function: linear(0 0%, 0.25 50%, 1 100%);
animation-timing-function: linear(0, 0.25 50% 75%, 1);
animation-timing-function: linear(0, 0.25 50%, 0.25 75%, 1);
/* steps() function values */
animation-timing-function: steps(4, jump-start);
animation-timing-function: steps(10, jump-end);
animation-timing-function: steps(20, jump-none);
animation-timing-function: steps(5, jump-both);
animation-timing-function: steps(6, start);
animation-timing-function: steps(8, end);
/* Multiple animations */
animation-timing-function: ease, step-start, cubic-bezier(0.1, 0.7, 1, 0.1);
/* Global values */
animation-timing-function: inherit;
animation-timing-function: initial;
animation-timing-function: revert;
animation-timing-function: revert-layer;
animation-timing-function: unset;
Werte
<easing-function>-
Die Easing-Funktion, die einer bestimmten Animation entspricht, wie durch
animation-namebestimmt.Die nicht-stufigen Schlüsselwortwerte (
ease,linear,ease-in-out, etc.) repräsentieren jeweils kubische Bézierkurven mit festen Vierpunktwerten, während dercubic-bezier()Funktionswert die Angabe nicht vordefinierter Werte ermöglicht. Diesteps()Easing-Funktion teilt die Eingabezeit in eine bestimmte Anzahl gleich langer Intervalle. Ihre Parameter umfassen eine Anzahl von Schritten und eine Schrittposition.linear-
Entspricht
cubic-bezier(0.0, 0.0, 1.0, 1.0), animiert mit gleichmäßiger Geschwindigkeit. ease-
Entspricht
cubic-bezier(0.25, 0.1, 0.25, 1.0), der Standardwert, erhöht die Geschwindigkeit in Richtung Mitte der Animation und verlangsamt sich zum Ende hin. ease-in-
Entspricht
cubic-bezier(0.42, 0, 1.0, 1.0), beginnt langsam, wobei sich die Geschwindigkeit des Übergangs der animierenden Eigenschaft bis zum Abschluss erhöht. ease-out-
Entspricht
cubic-bezier(0, 0, 0.58, 1.0), beginnt schnell und verlangsamt sich, während die Animation fortschreitet. ease-in-out-
Entspricht
cubic-bezier(0.42, 0, 0.58, 1.0), wobei die animierenden Eigenschaften langsam übergehen, beschleunigen und dann wieder verlangsamen. cubic-bezier(<number [0,1]> , <number> , <number [0,1]> , <number>)-
Eine vom Autor definierte kubische Bézierkurve, wobei der erste und dritte Wert im Bereich von 0 bis 1 liegen müssen.
linear(<number> <percentage>{1,2}, …)-
Die Funktion interpoliert linear zwischen den angegebenen Easing-Stoppunkten. Ein Stoppunkt ist ein Paar aus einem Ausgabefortschritt und einem Eingabeprozentsatz. Der Eingabeprozentsatz ist optional und wird abgeleitet, wenn er nicht angegeben ist. Wird kein Eingabeprozentsatz bereitgestellt, werden die ersten und letzten Stoppunkte auf
0%und100%festgelegt und die Stoppunkte in der Mitte erhalten Prozentsätze, die durch lineare Interpolation zwischen den nächstgelegenen vorherigen und nächsten Punkten mit Prozentsatzwerten abgeleitet werden. steps(<integer>, <step-position>)-
Zeigt eine Animationsiteration entlang n Stopps über die Übergänge hinweg an, wobei jeder Stopp für die gleiche Zeitdauer angezeigt wird. Zum Beispiel, wenn n 5 ist, gibt es 5 Schritte. Ob die Animation vorübergehend bei 0%, 20%, 40%, 60% und 80% hält, bei 20%, 40%, 60%, 80% und 100% oder 5 Stopps zwischen 0% und 100% macht oder 5 Stopps einschließlich der 0% und 100% Markierungen (bei 0%, 25%, 50%, 75% und 100%) macht, hängt davon ab, welche der folgenden Schrittpositionen verwendet wird:
jump-start-
Bezeichnet eine linksstetige Funktion, so dass der erste Sprung bei Beginn der Animation erfolgt.
jump-end-
Bezeichnet eine rechtsstetige Funktion, so dass der letzte Sprung bei Ende der Animation erfolgt. Das ist der Standard.
jump-none-
Es gibt keinen Sprung an einem Ende, was effektiv einen Schritt während der Interpolation entfernt. Stattdessen hält es sowohl bei der 0% als auch bei der 100% Marke, jeweils für 1/n der Dauer.
jump-both-
Enthält Pausen sowohl bei der 0% als auch bei der 100% Marke, was effektiv einen Schritt während der Animation hinzufügt.
start-
Dasselbe wie
jump-start. end-
Dasselbe wie
jump-end.
step-start-
Entspricht
steps(1, jump-start) step-end-
Entspricht
steps(1, jump-end)
Hinweis:
Wenn Sie mehrere durch Komma getrennte Werte bei einer animation-* Eigenschaft angeben, werden diese in der Reihenfolge angewendet, in der die animation-names erscheinen. Für Fälle, in denen die Anzahl der Animationen und animation-* Eigenschaftswerte nicht übereinstimmen, siehe Festlegung mehrerer Animationswerte.
Hinweis:
animation-timing-function hat den gleichen Effekt bei der Erstellung von scrollgesteuerten CSS-Animationen wie bei normalen zeitbasierten Animationen.
Beschreibung
Easing-Funktionen können auf individuelle Keyframes in einer @keyframes Regel festgelegt werden. Wenn kein animation-timing-function in einem Keyframe angegeben ist, wird der entsprechende Wert von animation-timing-function des Elements, auf das die Animation angewendet wird, für diesen Keyframe verwendet.
Innerhalb eines Keyframes ist animation-timing-function ein regulationsspezifischer Deskriptor, nicht die gleichnamige Eigenschaft. Das Timing wird nicht animiert. Stattdessen wird die Easing-Funktion eines Keyframes auf einer Eigenschaft-zu-Eigenschaft-Basis vom Keyframe, bei dem sie festgelegt wird, bis zum nächsten Keyframe, der diese Eigenschaft festlegt, oder bis zum Ende der Animation angewendet, wenn kein nachfolgender Keyframe diese Eigenschaft festlegt. Daher wird eine auf einem 100% oder to Keyframe angegebene animation-timing-function niemals verwendet.
Formale Definition
| Anfangswert | ease |
|---|---|
| Anwendbar auf | alle Elemente, ::before und ::after Pseudoelemente |
| Vererbt | Nein |
| Berechneter Wert | wie angegeben |
| Animationstyp | Not animatable |
Formale Syntax
animation-timing-function =
<easing-function>#
<easing-function> =
<linear-easing-function> |
<cubic-bezier-easing-function> |
<step-easing-function>
<linear-easing-function> =
linear |
<linear()>
<cubic-bezier-easing-function> =
ease |
ease-in |
ease-out |
ease-in-out |
<cubic-bezier()>
<step-easing-function> =
step-start |
step-end |
<steps()>
<linear()> =
linear( [ <number> && <percentage>{0,2} ]# )
<cubic-bezier()> =
cubic-bezier( [ <number [0,1]> , <number> ]#{2} )
<steps()> =
steps( <integer> , <step-position>? )
<step-position> =
jump-start |
jump-end |
jump-none |
jump-both |
start |
end
Beispiele
Alle Beispiele in diesem Abschnitt animieren die width und background-color Eigenschaften mehrerer <div> Elemente mit unterschiedlichen animation-timing-function Werten. Die Weite wird von 0 auf 100% und die Hintergrundfarbe von Lime auf Magenta animiert.
Lineare Funktionsbeispiele
Das Beispiel demonstriert die Effekte verschiedener linear() Easing-Funktionswerte.
Das folgende Bild zeigt Diagramme aller im Beispiel verwendeten linear() Funktionswerte. Der Eingabefortschritt (Zeit) wird auf der x-Achse und der Ausgabefortschritt auf der y-Achse geplottet. Gemäß der Syntax reicht der Eingabefortschritt von 0 bis 100%, und die Ausgabe reicht von 0 bis 1.

Beachten Sie, dass die Ausgabe vorwärts oder rückwärts gehen kann.
Kubische-Bézier Beispiele
Das Beispiel demonstriert die Effekte verschiedener bézierkurvenartiger Easing-Funktionen.
Das folgende Bild zeigt Diagramme aller im Beispiel verwendeten kubischen Bézier-Funktionswerte. Der Eingabefortschritt (Zeit) reicht von 0 bis 1 und der Ausgabefortschritt reicht von 0 bis 1.

Schrittbeispiele
Dieses Beispiel demonstriert die Effekte mehrerer Schritt-Easing-Funktionswerte.
Das folgende Bild zeigt Diagramme aller im Beispiel verwendeten step() Funktionswerte. Der Eingabefortschritt (Zeit) und der Ausgabefortschritt reichen von 0 bis 1.

Spezifikationen
| Specification |
|---|
| CSS Animations Level 1> # animation-timing-function> |
Browser-Kompatibilität
Loading…
Siehe auch
- Verwendung von CSS-Animationen
<easing-function>- CSS-Easing-Funktionen Modul
- JavaScript
AnimationEventAPI - Kubische Bézier-Generator-Tool
- Weitere verwandte Animationseigenschaften:
animation,animation-composition,animation-delay,animation-direction,animation-duration,animation-fill-mode,animation-iteration-count,animation-name,animation-play-state,animation-timeline