Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

Element: animate() Methode

Baseline Widely available *

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨März 2020⁩.

* Some parts of this feature may have varying levels of support.

Die animate() Methode der Element Schnittstelle ist eine Kurzbefehlsmethode, die eine neue Animation erstellt, sie auf das Element anwendet und dann die Animation abspielt. Sie gibt die erstellte Instanz des Animation Objekts zurück.

Hinweis: Elemente können mehrere Animationen haben, die auf sie angewendet werden. Sie können eine Liste der Animationen erhalten, die ein Element beeinflussen, indem Sie Element.getAnimations() aufrufen.

Syntax

js
animate(keyframes, options)

Parameter

keyframes

Entweder ein Array von Keyframe-Objekten oder ein Keyframe-Objekt, dessen Eigenschaften Arrays von Werten sind, über die iteriert wird. Siehe Keyframe-Formate für weitere Details.

options

Entweder eine ganzzahlige Angabe der Animationsdauer (in Millisekunden) oder ein Objekt, das eine oder mehrere Timing-Eigenschaften enthält, die im KeyframeEffect() Optionsparameter beschrieben sind, und/oder die folgenden Optionen:

id Optional

Eine Eigenschaft, die einzigartig für animate() ist: Ein String, mit dem die Animation referenziert werden kann.

rangeEnd Optional

Gibt das Ende des Zuordnungsbereichs einer Animation entlang ihrer Zeitachse an, d.h. wo die Animation entlang der Zeitachse endet. Das JavaScript-Äquivalent der CSS-Eigenschaft animation-range-end. rangeEnd kann verschiedene Wertetypen annehmen, wie folgt:

  • Ein String, der normal sein kann (bedeutet keine Änderung des Zuordnungsbereichs der Animation), ein CSS <length-percentage>, der einen Offset darstellt, ein <timeline-range-name>, oder ein <timeline-range-name> mit einem nachfolgenden <length-percentage>. Zum Beispiel: "normal", "entry", oder "cover 100%".

    Siehe animation-range für eine detaillierte Beschreibung der verfügbaren Werte. Schauen Sie sich auch den View Timeline Ranges Visualizer an, der genau zeigt, was die verschiedenen Werte in einem leicht verständlichen visuellen Format bedeuten.

  • Ein Objekt, das rangeName (ein String) und offset (ein CSSNumericValue) Eigenschaften enthält, die ein <timeline-range-name> und ein <length-percentage> repräsentieren, wie in der vorherigen Aufzählung beschrieben. Zum Beispiel: { rangeName: "entry", offset: CSS.percent("100") }.

  • Ein CSSNumericValue, das einen Offset repräsentiert, zum Beispiel: CSS.percent("100").

rangeStart Optional

Gibt den Beginn des Zuordnungsbereichs einer Animation entlang ihrer Zeitachse an, d.h. wo die Animation entlang der Zeitachse beginnt. Das JavaScript-Äquivalent der CSS-Eigenschaft animation-range-start. rangeStart kann die gleichen Wertetypen wie rangeEnd annehmen.

timeline Optional

Eine Eigenschaft, die einzigartig für animate() ist: Der AnimationTimeline, der mit der Animation verbunden wird. Standardwert ist Document.timeline. Das JavaScript-Äquivalent der CSS-Eigenschaft animation-timeline.

Rückgabewert

Gibt eine Animation zurück.

Beispiele

Rotieren und Skalieren

In diesem Beispiel verwenden wir die animate() Methode, um ein Element zu rotieren und zu skalieren.

HTML

html
<div class="newspaper">Spinning newspaper<br />causes dizziness</div>

CSS

css
html,
body {
  height: 100%;
}

body {
  display: flex;
  justify-content: center;
  align-items: center;
  background-color: black;
}

.newspaper {
  padding: 0.5rem;
  text-transform: uppercase;
  text-align: center;
  background-color: white;
  cursor: pointer;
}

JavaScript

js
const newspaperSpinning = [
  { transform: "rotate(0) scale(1)" },
  { transform: "rotate(360deg) scale(0)" },
];

const newspaperTiming = {
  duration: 2000,
  iterations: 1,
};

const newspaper = document.querySelector(".newspaper");

newspaper.addEventListener("click", () => {
  newspaper.animate(newspaperSpinning, newspaperTiming);
});

Ergebnis

Down the Rabbit Hole Demo

In der Demo Down the Rabbit Hole (mit der Web Animation API) verwenden wir die praktische animate() Methode, um sofort eine Animation auf dem #tunnel Element zu erstellen und abzuspielen, damit es unendlich nach oben fließt. Beachten Sie das Array von Objekten, das als Keyframes übergeben wird, sowie den Timing-Optionsblock.

js
document.getElementById("tunnel").animate(
  [
    // keyframes
    { transform: "translateY(0px)" },
    { transform: "translateY(-300px)" },
  ],
  {
    // timing options
    duration: 1000,
    iterations: Infinity,
  },
);

Implizite zu/von Keyframes

In neueren Browserversionen können Sie nur einen Anfangs- oder Endzustand für eine Animation festlegen (d.h. ein einziges Keyframe), und der Browser leitet das andere Ende der Animation ab, wenn er dazu in der Lage ist. Betrachten Sie zum Beispiel diese einfache Animation — das Keyframe-Objekt sieht folgendermaßen aus:

js
let rotate360 = [{ transform: "rotate(360deg)" }];

Wir haben nur den Endzustand der Animation angegeben, und der Anfangszustand ist impliziert.

timeline, rangeStart und rangeEnd

Die typische Verwendung der timeline, rangeStart und rangeEnd Eigenschaften könnte so aussehen:

js
const img = document.querySelector("img");

const timeline = new ViewTimeline({
  subject: img,
  axis: "block",
});

img.animate(
  {
    opacity: [0, 1],
    transform: ["scaleX(0)", "scaleX(1)"],
  },
  {
    fill: "both",
    duration: 1,
    timeline,
    rangeStart: "cover 0%",
    rangeEnd: "cover 100%",
  },
);

Spezifikationen

Specification
Web Animations
# dom-animatable-animate

Browser-Kompatibilität

Siehe auch