Zum Inhalt springen

Web Animations API

Effektive Nutzung der Web Animations API

Die Web Animations API bietet eine leistungsstarke und flexible Möglichkeit, Animationen direkt im Browser zu erstellen, ohne zusätzliche Bibliotheken zu benötigen. Sie ermöglicht es Entwicklern, HTML-Elemente zu animieren und die Animationen programmatisch zu steuern. Diese API integriert die Funktionen von CSS-Animationen und -Übergängen mit den Möglichkeiten von JavaScript und bietet mehr Kontrolle und Funktionalität, wie das Synchronisieren von Animationen, das Steuern ihrer Wiedergabe sowie das dynamische Manipulieren und Kombinieren von Animationen.

Nachdem wir nun erläutert haben, was die Web Animations API ist, welche Vorteile sie bietet, warum man sie wählen sollte, wann man sie einsetzen kann und welche Probleme sie löst, werfen wir einen Blick darauf, wie Sie diese API effektiv nutzen können, um Ihre Webdesigns zum Leben zu erwecken.

Einfache Animation mit der Web Animations API

Das Erstellen einer einfachen Animation mit der Web Animations API umfasst das Definieren der Keyframes, das Angeben des Ziellements und das Konfigurieren der Animationsoptionen. Hier ist ein vereinfachtes Beispiel für die Animation der Deckkraft (Opacity) eines Elements:


html
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>Simple Opacity Animation</title>
  </head>
  <body>
    <h1>Simple Opacity Animation</h1>
    <div
      class="animated-element"
      style="width: 100px; height: 100px; background-color: blue"
    ></div>
    <button style="margin-top: 15px" onclick="startAnimation()">
      Start Animation
    </button>
    <p id="message"></p>
    <script>
      let animation;

      function startAnimation() {
        const element = document.querySelector(".animated-element");
        const keyframes = [
          { opacity: 0, offset: 0 },
          { opacity: 1, offset: 1 },
        ];
        const options = {
          duration: 1000,
          easing: "ease-in-out",
          iterations: 1,
          fill: "forwards",
        };

        // Create and play the animation
        animation = element.animate(keyframes, options);

        // Handle animation events
        animation.onfinish = () => {
          document.getElementById("message").textContent =
            "Animation finished!";
        };

        animation.oncancel = () => {
          document.getElementById("message").textContent = "Animation reset.";
        };
      }

      // Resets the animation
      function resetAnimation() {
        if (animation) {
          animation.cancel();
        }
        startAnimation(); // Restart the animation
      }
    </script>
  </body>
</html>

Dieses Beispiel zeigt, wie die Deckkraft eines Elements mit der Web Animations API animiert wird. Ein Button löst die Animation aus, die die Deckkraft des Elements sanft von unsichtbar (0) auf vollständig sichtbar (1) ändert. Nach Abschluss der Animation wird dem Benutzer eine Nachricht angezeigt. Dies veranschaulicht die grundlegende Steuerung von Animationen und die Ereignisbehandlung.

Komplexe Animationen und Sequenzen

Für komplexere Animationen und Sequenzen können Sie mehrere Animationen mit Promises und async/await verketten. Hier ist ein Beispiel für die Verkettung von Animationen:


html
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>Animation Sequence</title>
  </head>
  <body>
    <h1>Animation Sequence</h1>
    <div
      class="animated-element"
      style="width: 100px; height: 100px; background-color: red"
    ></div>
    <button style="margin-top: 15px" onclick="animateSequence()">
      Start Animation
    </button>
    <p id="message"></p>
    <script>
      async function animateSequence() {
        document.getElementById("message").textContent = ""; // Clear message
        const element = document.querySelector(".animated-element");
        const animation1 = element.animate(
          { opacity: [0, 1], transform: ["scale(0)", "scale(1)"] },
          { duration: 1000, easing: "ease-in-out" }
        );

        await animation1.finished;

        const animation2 = element.animate(
          { opacity: [1, 0], transform: ["scale(1)", "scale(0)"] },
          { duration: 1000, easing: "ease-in-out" }
        );

        await animation2.finished;
        document.getElementById("message").textContent = "Sequence complete!";
      }
    </script>
  </body>
</html>

In diesem Beispiel erhöht die erste Animation die Deckkraft des Elements und skaliert es hoch. Nach Abschluss führt die zweite Animation das Ausblenden des Elements und das Herunterskalieren durch. Am Ende wird eine Abschlussnachricht angezeigt, die demonstriert, wie Animationen sequenziell verkettet werden können.

Steuerung und Verwaltung von Animationen

Die Web Animations API bietet außerdem Methoden zum Steuern und Verwalten von Animationen. So können Sie eine Animation beispielsweise pausieren, fortsetzen oder abbrechen. Hier ist ein Beispiel, wie Sie eine Animation pausieren und fortsetzen:


html
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>Toggle Animation Play/Pause</title>
  </head>
  <body>
    <h1>Toggle Play/Pause Animation</h1>
    <div
      class="animated-element"
      style="width: 100px; height: 100px; background-color: green"
    ></div>
    <button style="margin-top: 15px" onclick="togglePlayPause()">Toggle Play/Pause</button>
    <p id="message"></p>
    <script>
      let animation;

      document.addEventListener("DOMContentLoaded", function () {
        const element = document.querySelector(".animated-element");
        animation = element.animate(
          { opacity: [0, 1] },
          { 
            duration: 1000, 
            easing: "ease-in-out", 
            iterations: Infinity, 
            direction: "alternate" 
          }
        );
        animation.pause(); // Start paused

        animation.onfinish = () => {
          document.getElementById("message").textContent =
            "Animation finished!";
        };
      });

      function togglePlayPause() {
        if (animation.playState === "running") {
          animation.pause();
          document.getElementById("message").textContent = "Animation paused";
        } else {
          animation.play();
          document.getElementById("message").textContent = "Animation playing";
        }
      }
    </script>
  </body>
</html>

Dieses Beispiel zeigt, wie Sie den Wiedergabe- und Pausenzustand einer Animation durch einen Klick umschalten können. Die initiale Animation lässt ein Element kontinuierlich ein- und ausblenden. Durch Klicken auf einen Button kann der Benutzer die Animation pausieren, wenn sie läuft, oder fortsetzen, wenn sie pausiert ist. Nachrichten zeigen den aktuellen Zustand der Animation an, was die Benutzerinteraktion und die Kontrolle über die Animationszustände verbessert.

Fazit

Die Web Animations API ermöglicht es Webentwicklern, fesselnde und interaktive Animationen zu erstellen, die das Nutzererlebnis auf Websites und Webanwendungen verbessern. Durch die Beherrschung dieser API können Sie Animationen von einfachen Übergängen bis hin zu komplexen Sequenzen gestalten und Ihren Webdesigns eine dynamische und ansprechende Dimension verleihen. Ob Sie Benutzeroberflächen animieren, visuelle Effekte hinzufügen oder interaktive Storytelling-Elemente erstellen – die Web Animations API bietet Ihnen die Werkzeuge, um Ihre kreativen Ideen im Web Wirklichkeit werden zu lassen.

Practice

Welche Funktionen bietet die JavaScript-Animations-API?

Finden Sie das nützlich?

Dual-run-Vorschau — vergleichen Sie mit den Symfony-Routen live.