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

css
/* 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 der cubic-bezier() Funktionswert die Angabe nicht vordefinierter Werte ermöglicht. Die steps() 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% und 100% 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-names 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

Anfangswertease
Anwendbar aufalle Elemente, ::before und ::after Pseudoelemente
VererbtNein
Berechneter Wertwie angegeben
AnimationstypNot 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.

Ein Bild, das 'linear' Funktionsgraphen zeigt

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.

Ein Bild, das 'cubic-bezier' Funktionsgraphen zeigt

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.

Bild das 'steps' Funktionsgraphen zeigt

Spezifikationen

Specification
CSS Animations Level 1
# animation-timing-function
CSS Easing Functions Level 1
# linear-easing-function-parsin

Browser-Kompatibilität

Siehe auch