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 fortschreitet.
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 bequem, die Kurzschreibweiseigenschaft 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 der Animation entsprechende "Easing Function", wie durch
animation-name
bestimmt.Die nicht-schrittweise Schlüsselwortwerte (
ease
,linear
,ease-in-out
usw.) stellen jeweils kubische Bézier-Kurven mit festen Vier-Punkt-Werten dar, während dercubic-bezier()
Funktionswert die Angabe nicht vordefinierter Werte ermöglicht. Diesteps()
"Easing Function" teilt die Eingabezeit in eine bestimmte Anzahl gleichlanger 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)
, dem Standardwert, nimmt die Geschwindigkeit zur Mitte der Animation hin zu und verlangsamt sich am Ende wieder. ease-in
-
Entspricht
cubic-bezier(0.42, 0, 1.0, 1.0)
, beginnt langsam, mit zunehmender Geschwindigkeit der Übergangs des animierenden Werts, bis dieser vollständig ist. ease-out
-
Entspricht
cubic-bezier(0, 0, 0.58, 1.0)
, beginnt schnell und verlangsamt sich, während die Animation fortgesetzt wird. ease-in-out
-
Entspricht
cubic-bezier(0.42, 0, 0.58, 1.0)
, bei dem 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ézier-Kurve, bei der 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 Stop Points". Ein "Stop Point" ist ein Paar aus einem Ausgangsfortschritt und einem Eingabeprozentsatz. Der Eingabeprozentsatz ist optional und wird abgeleitet, wenn er nicht angegeben ist. Wenn kein Eingabeprozentsatz bereitgestellt wird, dann werden die ersten und letzten "Stop Points" auf
0%
und100%
gesetzt, und die "Stop Points" in der Mitte erhalten Prozentsatzwerte, die durch lineare Interpolation zwischen den nächstgelegenen vorhergehenden und nächsten Punkten, die einen Prozentsatzwert haben, abgeleitet werden. steps(<integer>, <step-position>)
-
Zeigt eine Animationsiteration entlang n Haltepunkten entlang des Übergangs, wobei jeder Haltepunkt für gleiche Zeitlängen angezeigt wird. Zum Beispiel, wenn n 5 ist, gibt es 5 Schritte. Ob die Animation vorübergehend bei 0%, 20%, 40%, 60% und 80% oder auf die 20%, 40%, 60%, 80% und 100% anhält oder 5 Stops zwischen der 0% und 100% während der Animation macht oder 5 Stops inklusive der 0% und 100% Markierungen (auf 0%, 25%, 50%, 75% und 100%) einfügt, hängt davon ab, welche der folgenden Schrittpositionen verwendet wird:
jump-start
-
Bezeichnet eine linksseitig-stetige Funktion, so dass der erste Sprung eintritt, wenn die Animation beginnt.
jump-end
-
Bezeichnet eine rechtsseitig-stetige Funktion, so dass der letzte Sprung eintritt, wenn die Animation endet. Dies ist der Standardwert.
jump-none
-
Es gibt keinen Sprung am Anfang oder Ende, wodurch effektiv ein Schritt während der Interpolation ausgelassen wird. Stattdessen wird sowohl bei der 0%-Markierung als auch bei der 100%-Markierung bei beiden für 1/n der Dauer angehalten.
jump-both
-
Beinhaltet Pausen sowohl bei der 0%- als auch bei der 100%-Markierung, wodurch effektiv ein Schritt während der Animationsiteration hinzugefügt wird.
start
-
Entspricht
jump-start
. end
-
Entspricht
jump-end
.
step-start
-
Entspricht
steps(1, jump-start)
step-end
-
Entspricht
steps(1, jump-end)
Hinweis:
Wenn Sie mehrere durch Kommas getrennte Werte für eine animation-*
Eigenschaft angeben, werden sie in der Reihenfolge angewendet, in der die animation-name
s erscheinen. Für Situationen, in denen die Anzahl der Animationen und animation-*
Eigenschaftswerte nicht übereinstimmen, siehe Festlegen mehrerer Animations-Eigenschaftswerte.
Hinweis:
animation-timing-function
hat denselben Effekt beim Erstellen von CSS-Scroll-Animationen wie bei regulären zeitbasierten Animationen.
Beschreibung
"Easing Functions" können auf einzelne Keyframes in einer @keyframes
Regel angewendet werden. Wenn in einem Keyframe keine animation-timing-function
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 at-rule-spezifischer Deskriptor und nicht die gleichnamige Eigenschaft. Die Zeitsteuerung wird nicht selbst animiert. Stattdessen wird eine "Easing Function" eines Keyframes von dem Keyframe, auf dem sie festgelegt ist, bis zum nächsten Keyframe, der diese Eigenschaft festlegt, oder bis zum Ende der Animation angewendet, wenn kein nachfolgender Keyframe diese Eigenschaft verfügt. Daher wird eine auf dem 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 Breite wird von 0
bis 100%
animiert und die Hintergrundfarbe von Limette zu Magenta.
Beispiele für die lineare Funktion
Das Beispiel zeigt die Effekte verschiedener linear()
"Easing Function" Werte.
Das folgende Bild zeigt Graphen aller im Beispiel verwendeten linear()
Funktionswerte. Der Eingabefortschritt (Zeit) wird auf der x-Achse und der Ausgabefortschritt auf der y-Achse dargestellt. Gemäß der Syntax reicht der Eingabefortschritt von 0 bis 100%, und der Ausgabefortschritt reicht von 0 bis 1.
Beachten Sie, dass der Ausgabefortschritt vorwärts oder rückwärts gehen kann.
Beispiele für Kubik-Bézier
Das Beispiel zeigt die Effekte verschiedener Bézier-Kurve "Easing Functions".
Das folgende Bild zeigt Graphen aller im Beispiel verwendeten Kubik-Bézier-Funktionswerte. Der Eingabefortschritt (Zeit) reicht von 0 bis 1 und der Ausgabefortschritt reicht von 0 bis 1.
Schritt-Beispiele
Dieses Beispiel zeigt die Effekte mehrerer Schritt-für-Schritt "Easing Function" Werte.
Das folgende Bild zeigt Graphen 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 Functions" Modul
- JavaScript
AnimationEvent
API - Werkzeug zur Erstellung von kubischen Bézier-Kurven
- Andere verwandte Animationseigenschaften:
animation
,animation-composition
,animation-delay
,animation-direction
,animation-duration
,animation-fill-mode
,animation-iteration-count
,animation-name
,animation-play-state
,animation-timeline