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 #333;
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%;
}
}
"use strict";
window.addEventListener("load", () => {
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 für eine bestimmte Animation entsprechende Easing-Funktion, wie durch
animation-name
bestimmt.Die Nicht-Schritt-Schlüsselwortwerte (
ease
,linear
,ease-in-out
, etc.) entsprechen kubischen Bézier-Kurven mit festen vier Punktwerten, während dercubic-bezier()
Funktionswert die Angabe nicht vordefinierter Werte ermöglicht. Diesteps()
Easing-Funktion teilt die Eingabezeit in eine bestimmte Anzahl von gleich langen Intervallen. 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, die Geschwindigkeit nimmt 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, die Geschwindigkeit der Übergangseigenschaft nimmt zu, bis sie abgeschlossen ist. ease-out
-
Entspricht
cubic-bezier(0, 0, 0.58, 1.0)
, startet schnell und verlangsamt sich, während die Animation fortschreitet. ease-in-out
-
Entspricht
cubic-bezier(0.42, 0, 0.58, 1.0)
, mit langsam übergehenden, beschleunigenden und dann erneut verlangsamenden Animationseigenschaften. cubic-bezier(<number [0,1]> , <number> , <number [0,1]> , <number>)
-
Eine vom Autor definierte kubische Bézier-Kurve, wobei die ersten und dritten Werte 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. Wenn kein Eingabeprozentsatz angegeben wird, werden die ersten und letzten Stoppunkte auf
0%
und100%
gesetzt, und die Zwischensoppunkte erhalten Prozentsätze, die durch lineare Interpolation zwischen den nächsten und vorherigen Punkten mit Prozentsatz erhalten werden. steps(<integer>, <step-position>)
-
Zeigt eine Animationsiteration entlang n Stopps entlang des Übergangs an und zeigt jeden Stopp für gleich lange Zeitspannen. Beispielsweise, wenn n 5 ist, gibt es 5 Schritte. Ob die Animation vorübergehend an 0%, 20%, 40%, 60% und 80% hält, an 20%, 40%, 60%, 80% und 100%, oder 5 Haltepunkte zwischen den 0% und 100% über die Animation hinzufügt, oder 5 Stopps einschließlich der 0% und 100% Marken (bei 0%, 25%, 50%, 75% und 100%) erzeugt, hängt davon ab, welche der folgenden Schrittpositionen verwendet wird:
jump-start
-
Bezeichnet eine links-kontinuierliche Funktion, sodass der erste Sprung passiert, wenn die Animation beginnt.
jump-end
-
Bezeichnet eine rechts-kontinuierliche Funktion, sodass der letzte Sprung passiert, wenn die Animation endet. Dies ist der Standardwert.
jump-none
-
Es gibt keinen Sprung an beiden Enden, was effektiv einen Schritt während der Interpolation entfernt. Stattdessen bleibt es sowohl bei der 0% als auch bei der 100% Marke, jeweils für 1/n der Dauer.
jump-both
-
Beinhaltet Pausen sowohl bei der 0% als auch der 100% Marke, was effektiv einen Schritt während der Animationsiteration hinzufügt.
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 bei einer animation-*
Eigenschaft angeben, werden sie in der Reihenfolge auf die Animationen angewendet, in der die animation-name
s erscheinen. Für Situationen, in denen die Anzahl der Animationen und animation-*
Eigenschaftswerte nicht übereinstimmen, siehe Mehrere Animations-Eigenschaftswerte festlegen.
Hinweis: animation-timing-function
hat denselben Effekt bei der Erstellung von CSS scrollgesteuerten Animationen wie bei regulären, zeitbasierten Animationen.
Beschreibung
Easing-Funktionen können bei einzelnen Keyframes in einer @keyframes
Regel angegeben werden. Wenn für ein Keyframe keine animation-timing-function
angegeben ist, wird der entsprechende Wert von animation-timing-function
, der auf das Element angewendet wird, auf dieses Keyframe angewendet.
Innerhalb eines Keyframes ist animation-timing-function
ein at-regel-spezifischer Deskriptor und nicht die gleichnamige Eigenschaft. Das Timing wird nicht animiert. Stattdessen wird eine Easing-Funktion eines Keyframes eigenschaftsweise von dem Keyframe, auf dem sie angegeben ist, bis zum nächsten Keyframe, der diese Eigenschaft angibt, oder bis zum Ende der Animation angewendet, wenn kein nachfolgendes Keyframe diese Eigenschaft angibt. 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
auf 100%
animiert und die Hintergrundfarbe wird von lime nach magenta animiert.
Linear-Funktionsbeispiele
Das Beispiel zeigt die Effekte verschiedener linear()
Easing-Funktionswerte.
Das folgende Bild zeigt Graphen aller in diesem Beispiel verwendeten linear()
Funktionswerte. Die Eingangsprogression (Zeit) wird auf der x-Achse aufgetragen und die Ausgangsprogression auf der y-Achse. Gemäß der Syntax reicht die Eingangsprogression von 0 bis 100% und die Ausgangsprogression von 0 bis 1.
Beachten Sie, dass die Ausgabe vorwärts oder rückwärts gehen kann.
Kubische Bézier-Beispiele
Das Beispiel zeigt die Effekte verschiedener Bézier-Kurven Easing-Funktionen.
Das folgende Bild zeigt Graphen aller in diesem Beispiel verwendeten kubischen Bézier-Funktionswerte. Die Eingangsprogression (Zeit) reicht von 0 bis 1 und die Ausgangsprogression reicht von 0 bis 1.
Schritt-Beispiele
Dieses Beispiel demonstriert die Effekte mehrerer Schritt-Easing-Funktionswerte.
Das folgende Bild zeigt Graphen aller in diesem Beispiel verwendeten step()
Funktionswerte. Die Eingangsprogression (Zeit) und Ausgangsprogression reichen von 0 bis 1.
Spezifikationen
Specification |
---|
CSS Animations Level 1 # animation-timing-function |
CSS Easing Functions Level 1 # linear-easing-function-parsin |
Browser-Kompatibilität
Siehe auch
- CSS-Animationen verwenden
<easing-function>
- JavaScript
AnimationEvent
API - Kubische Bézier-Generierungswerkzeug
- 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