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%;
}
}
"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 bequem, die Kurzschreibweise animation
zu verwenden, um alle Animations-Eigenschaften 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-name
bestimmt.Die Nicht-Step-Keyword-Werte (
ease
,linear
,ease-in-out
, etc.) stellen jeweils kubische Bézier-Kurven mit festen Vier-Punkt-Werten dar, während dercubic-bezier()
-Funktionswert nicht vordefinierte Werte ermöglicht. Diesteps()
-Easing-Funktion teilt die Eingabezeit in eine angegebene Anzahl von Intervallen gleicher Länge. Ihre Parameter umfassen eine Anzahl von Schritten und eine Schritt-Position.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 der Mitte der Animation und verlangsamt am Ende wieder. ease-in
-
Entspricht
cubic-bezier(0.42, 0, 1.0, 1.0)
, beginnt langsam mit zunehmender Geschwindigkeit der Übergangseigenschaft bis zum Abschluss. ease-out
-
Entspricht
cubic-bezier(0, 0, 0.58, 1.0)
, beginnt schnell und verlangsamt, während die Animation fortschreitet. ease-in-out
-
Entspricht
cubic-bezier(0.42, 0, 0.58, 1.0)
, wobei die animierten 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, wobei der erste und der 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 nicht angegeben. Wird kein Eingabeprozentsatz bereitgestellt, werden der erste und letzte Stoppunkt auf
0%
bzw.100%
gesetzt, und die Stoppunkte in der Mitte erhalten Prozentwerte, die durch lineare Interpolation zwischen den nächstgelegenen vorherigen und nächsten Punkten mit Prozentwerten abgeleitet werden. steps(<integer>, <step-position>)
-
Zeigt eine Animationsiteration entlang n Haltepunkten entlang des Übergangs an, die jeweils für gleiche Zeitlängen angezeigt werden. 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%-Marken macht (bei 0%, 25%, 50%, 75% und 100%), hängt davon ab, welche der folgenden Schrittpositionen verwendet wird:
jump-start
-
Bezeichnet eine linksseitige Funktion, sodass der erste Sprung erfolgt, wenn die Animation beginnt.
jump-end
-
Bezeichnet eine rechtsseitige Funktion, sodass der letzte Sprung erfolgt, wenn die Animation endet. Dies ist die Standardeinstellung.
jump-none
-
Es gibt keinen Sprung an einem der Enden, wodurch effektiv ein Schritt während der Interpolationsiteration entfernt wird. Stattdessen hält es sowohl bei der 0%-Marke als auch bei der 100%-Marke, jeweils für 1/n der Dauer.
jump-both
-
Beinhaltet Pausen sowohl bei der 0%- als auch bei 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 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 Einstellen mehrerer Animations-Eigenschaftswerte.
Hinweis:
animation-timing-function
hat den gleichen Effekt bei der Erstellung von zeichengesteuerten CSS-Animationen wie bei regulären zeitbasierten Animationen.
Beschreibung
Easing-Funktionen können auf einzelne Schlüsselbilder in einer @keyframes
-Regel angegeben werden. Wenn kein animation-timing-function
auf einem Schlüsselbild angegeben wird, wird der entsprechende Wert von animation-timing-function
des Elements verwendet, auf das die Animation angewendet wird, für dieses Schlüsselbild verwendet.
Innerhalb eines Schlüsselbildes ist animation-timing-function
ein regelspezifischer Deskriptor, nicht die gleichnamige Eigenschaft. Das Timing wird nicht animiert. Stattdessen wird eine Easing-Funktion eines Schlüsselbildes auf einer Eigenschaft-basierten Basis von dem Schlüsselbild, auf dem sie angegeben ist, bis zum nächsten Schlüsselbild angewendet, das diese Eigenschaft spezifiziert, oder bis zum Ende der Animation, wenn es kein nachfolgendes Schlüsselbild gibt, das diese Eigenschaft spezifiziert. Daher wird eine auf dem 100%
oder to
Schlüsselbild spezifizierte 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 verschiedener <div>
-Elemente mit unterschiedlichen animation-timing-function
-Werten. Die Breite wird von 0
bis 100%
animiert und die Hintergrundfarbe wird von Lime zu Magenta animiert.
Lineare Funktionsbeispiele
Das Beispiel demonstriert die Effekte verschiedener linear()
-Easing-Funktionswerte.
Das folgende Bild zeigt Graphen aller im Beispiel verwendeten linear()
-Funktionswerte. Der Eingabefortschritt (Zeit) ist auf der x-Achse und der Ausgabefortschritt ist auf der y-Achse dargestellt. Gemäß der Syntax reicht der Eingabefortschritt von 0 bis 100%, und der Ausgabe fortschritt reicht von 0 bis 1.
Beachten Sie, dass der Ausgang vorwärts oder rückwärts gehen kann.
Kubische Bézier-Beispiele
Das Beispiel demonstriert die Effekte verschiedener Bézier-Kurve Easing-Funktionen.
Das folgende Bild zeigt Graphen aller im Beispiel verwendeten kubischen Bézier-Funktionswerte. Der Eingabefortschritt (Zeit) reicht von 0 bis 1 und der Ausgabefortschritt reicht von 0 bis 1.
Step-Beispiele
Dieses Beispiel zeigt die Effekte mehrerer Stufen-Easing-Funktionswerte.
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
Siehe auch
- CSS-Animationen verwenden
<easing-function>
- CSS-Easing-Funktionsmodul
- JavaScript
AnimationEvent
API - Kubische Bézier-Erstellungstool
- 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