Heim >Web-Frontend >CSS-Tutorial >Wie kann ich CSS3-Animationen nur auslösen, wenn ein Element in die Ansicht gescrollt wird?

Wie kann ich CSS3-Animationen nur auslösen, wenn ein Element in die Ansicht gescrollt wird?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-09 00:54:11765Durchsuche

How Can I Trigger CSS3 Animations Only When an Element Scrolls into View?

Aktivieren der CSS3-Animation, wenn der Inhalt in die Ansicht scrollt

Wenn die Position eines Elements über das Ansichtsfenster hinausgeht, wird es aus der Ansicht ausgeblendet. Um die Leistung zu optimieren, können CSS3-Animationen nur dann initiiert werden, wenn ein Element im Ansichtsfenster erscheint. Dies ist besonders nützlich für Elemente, die weit unten auf einer Seite platziert sind und über denen sich umfangreicher Inhalt befindet.

Um dies zu erreichen, verwenden wir JavaScript oder jQuery zum Erfassen von Scroll-Ereignissen. Sobald ein Scroll-Ereignis ausgelöst wird, prüft der Code, ob das Zielelement in das Ansichtsfenster gescrollt wurde. Wenn dies der Fall ist, wird dem Element eine Anzeigeklasse hinzugefügt, die den Beginn der Animation veranlasst.

Code Implementierung:

HTML:

<div class="bar">
    <div class="level eighty">80%</div>
</div>

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;
}

jQuery:

function isElementInViewport(elem) {
    var $elem = $(elem);

    // Scroll position
    var viewportTop = $(window).scrollTop();
    var viewportBottom = viewportTop + $(window).height();

    // Element position
    var elemTop = $elem.offset().top;
    var elemBottom = elemTop + $elem.height();

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

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

    if ($elem.hasClass('start')) return;
    
    if (isElementInViewport($elem)) {
        $elem.addClass('start');
    }
}

$(window).scroll(function(){
    checkAnimation();
});

Das obige ist der detaillierte Inhalt vonWie kann ich CSS3-Animationen nur auslösen, wenn ein Element in die Ansicht gescrollt wird?. 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