Maison > interface Web > tutoriel CSS > Comment déclencher une animation CSS3 uniquement lorsqu'un élément défile dans la vue ?

Comment déclencher une animation CSS3 uniquement lorsqu'un élément défile dans la vue ?

Barbara Streisand
Libérer: 2024-11-30 20:08:18
original
454 Les gens l'ont consulté

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

Déclenchement d'une animation CSS3 lors du défilement

Problème :

Un graphique à barres animé se charge avant que le contenu ne défile, ce qui entraîne manqué animation.

Solution :

Pour activer l'animation CSS3 lors du défilement dans la vue :

1. Capturer les événements de défilement

Implémentez des écouteurs d'événements JavaScript ou jQuery qui surveillent les événements de défilement.

2. Vérifiez la visibilité des éléments

Pour chaque événement de défilement, vérifiez si l'élément (graphique à barres) est visible dans la fenêtre d'affichage de l'utilisateur.

3. Démarrer l'animation

Une fois que l'élément devient visible (par exemple, lorsque isElementInViewport()) renvoie true), lancez l'animation en appliquant la classe CSS appropriée (par exemple, "start") .

Exemple Code :

<!-- 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) {
    // 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();
});
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