Maison > interface Web > tutoriel CSS > Comment puis-je déclencher des animations CSS3 uniquement lorsqu'un élément défile dans la vue ?

Comment puis-je déclencher des animations CSS3 uniquement lorsqu'un élément défile dans la vue ?

Mary-Kate Olsen
Libérer: 2024-12-09 00:54:11
original
756 Les gens l'ont consulté

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

Activation de l'animation CSS3 lorsque le contenu défile dans la vue

Lorsque la position d'un élément dépasse la fenêtre d'affichage, il devient masqué. Pour optimiser les performances, les animations CSS3 peuvent être lancées uniquement lorsqu'un élément apparaît dans la fenêtre. Ceci est particulièrement utile pour les éléments placés loin en bas d'une page avec un contenu substantiel au-dessus d'eux.

Pour y parvenir, nous utilisons JavaScript ou jQuery pour capturer les événements de défilement. Une fois qu'un événement de défilement est déclenché, le code vérifie si l'élément ciblé a défilé dans la fenêtre. Si tel est le cas, une classe d'indication est ajoutée à l'élément, invitant l'animation à démarrer.

Code Implémentation :

HTML :

<div class="bar">
    <div class="level eighty">80%</div>
</div>
Copier après la connexion

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;
}
Copier après la connexion

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();
});
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal