Heim >Web-Frontend >CSS-Tutorial >Wie löst man CSS-Animationen aus, wenn Elemente beim Scrollen der Seite in das Ansichtsfenster gelangen?

Wie löst man CSS-Animationen aus, wenn Elemente beim Scrollen der Seite in das Ansichtsfenster gelangen?

Barbara Streisand
Barbara StreisandOriginal
2024-11-20 12:51:13513Durchsuche

How to Trigger CSS Animations When Elements Enter the Viewport During Page Scroll?

Elemente animieren, wenn sie beim Scrollen der Seite im Ansichtsfenster sichtbar sind

Bei der Verwendung von CSS-Animationen auf einer Webseite kommt es häufig vor, dass alle Animationen gleichzeitig abgespielt werden und die anderen verdeckt werden der Boden. Um dieses Problem zu beheben, untersuchen wir eine Lösung mithilfe der IntersectionObserver-API.

IntersectionObserver-API

Mit der IntersectionObserver-API können Entwickler Änderungen an der Schnittmenge eines Elements überwachen seinen übergeordneten Container oder das Ansichtsfenster. Wenn ein Element angezeigt wird, löst es ein Ereignis aus, das zum Auslösen von Aktionen verwendet werden kann.

Beispielimplementierung

Hier ist ein Beispiel, das das Umschalten der CSS-Klasse auslöst, wenn ein Element wird im Viewport sichtbar:

<br>const inViewport = (entries, Observer) => {<br> entries.forEach(entry => {</p>
<pre class="brush:php;toolbar:false">entry.target.classList.toggle("is-inViewport", entry.isIntersecting);

});
};

const Obs = new IntersectionObserver(inViewport);
const obsOptions = {}; //Siehe: https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API#Intersection_observer_options

// Beobachter an jedes [data-inviewport]-Element anhängen:
Dokument .querySelectorAll('[data-inviewport]').forEach(el => {
Obs.observe(el, obsOptions);
});

Im obigen Beispiel werden alle Elemente mit dem Attribut [data-inviewport] überwacht. Wenn ein Element angezeigt wird, wird die is-inViewport-Klasse hinzugefügt und die im folgenden CSS definierte Animation wird ausgelöst.

<br>[data-inviewport="scale-in"] { <br> Transition: 2s;<br> Transformation: Scale(0.1);<br>}<br>[data-inviewport="scale-in"].is-inViewport { <br> Transformation: Scale(1) ;<br>}</p>
<p>[data-inviewport="fade-rotate"] { <br> Übergang: 2s;<br> Deckkraft: 0;<br>}<br>[data-inviewport=" fade-rotate"].is-inViewport { <br> transform: rotation(180deg);<br> opacity: 1;<br>}<br>

Diese Lösung stellt sicher, dass Animationen Spielen Sie nur, wenn Elemente beim Scrollen sichtbar werden, was das Benutzererlebnis verbessert und eine optisch ansprechendere Webseite erstellt.

Das obige ist der detaillierte Inhalt vonWie löst man CSS-Animationen aus, wenn Elemente beim Scrollen der Seite in das Ansichtsfenster gelangen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn