Heim > Web-Frontend > CSS-Tutorial > Wie löst man eine CSS3-Animation nur aus, wenn ein Element in die Ansicht gescrollt wird?

Wie löst man eine CSS3-Animation nur aus, wenn ein Element in die Ansicht gescrollt wird?

Barbara Streisand
Freigeben: 2024-11-30 20:08:18
Original
509 Leute haben es durchsucht

How to Trigger CSS3 Animation Only When an Element is Scrolled into View?

CSS3-Animation beim Scrollen auslösen

Problem:

Ein animiertes Balkendiagramm wird geladen, bevor der Inhalt angezeigt wird, was dazu führt verpasste Animation.

Lösung:

Zu aktivieren die CSS3-Animation beim Scrollen in die Ansicht:

1. Erfassen Sie Scroll-Ereignisse

Implementieren Sie JavaScript- oder jQuery-Ereignis-Listener, die Scroll-Ereignisse überwachen.

2. Überprüfen Sie die Sichtbarkeit des Elements

Überprüfen Sie für jedes Scroll-Ereignis, ob das Element (Balkendiagramm) im Ansichtsfenster des Benutzers sichtbar ist.

3. Animation starten

Sobald das Element sichtbar wird (z. B. wenn isElementInViewport()) true zurückgibt), starten Sie die Animation durch Anwenden der entsprechenden CSS-Klasse (z. B. „start“). .

Beispiel Code:

<!-- HTML -->
<div class="bar">
    <div class="level eighty">80%</div>
</div>
Nach dem Login kopieren
<!-- CSS -->
.eighty.start {
    width: 0px;
    background: #aae0aa;
    -webkit-animation: eighty 2s ease-out forwards;
       -moz-animation: eighty 2s ease-out forwards;
        -ms-animation: eighty 2s ease-out forwards;
         -o-animation: eighty 2s ease-out forwards;
            animation: eighty 2s ease-out forwards;
}
Nach dem Login kopieren
<!-- jQuery -->
function isElementInViewport(elem) {
    // Calculate element and viewport positions
    // ...

    return ((elemTop < viewportBottom) && (elemBottom > viewportTop));
}

function checkAnimation() {
    $elem = $('.bar .level');

    // Prevent redundant animation start
    if ($elem.hasClass('start')) return;

    if (isElementInViewport($elem)) {
        // Start the animation
        $elem.addClass('start');
    }
}

$(window).scroll(function(){
    checkAnimation();
});
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie löst man eine CSS3-Animation nur aus, wenn ein Element in die Ansicht gescrollt wird?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
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 Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage