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
Freigeben: 2024-11-20 12:51:13
Original
515 Leute haben es durchsucht

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>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">entry.target.classList.toggle("is-inViewport", entry.isIntersecting);
Nach dem Login kopieren

});
};

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!

Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage