Bonjour à tous,

j'aimerais mettre en place une animation de différents éléments dans une page. Le but étant d'avoir l'animation qui début lorsque que le scroll de la page arrive à un certain niveau de ces éléments.

Le problème, c'est que l'animation se répète a chaque évènement "scroll" alors que j'aimerais qu'une fois l'animation terminée, elle s'arrête (logique ^^).

Voici le bout de code que j'ai mis en place :

$(document).ready(function(){
    $(window).scroll(function(e){
        $('.animated-div').each(function(){
            if($(window).height() + $(window).scrollTop() - $(this).offset().top > 0){
                $(this).trigger("animation");
        }
    });
    });
    $('.animated-div').on('animation', function(){
    var that = $(this);
    that.find('.animated').each(function(){
        $(this).velocity('fadeIn', {                
        duration: 600,
        delay: 700
        });         
    });
    });

});

Merci d'avance pour votre aide ;)

3 réponses


chatoninja
Réponse acceptée

Plusieurs plugins permettent d'implémenter ce genre de comportement. J'en ai trouvé deux (mais je ne sais pas si c'est vraiment ce que tu veux).

scrollReveal.js
http://www.jqueryrain.com/?RDqj9qEb

scrollMagic.js (un peu moins bien à mon goût)
http://www.jqueryrain.com/?acp0isGT

Mais il en existe certainement d'autres.

Romano83
Auteur

Merci pour ta réponse chatoninja ;)
Je vais voir avec ces plugins mais je pense qu'il y a possibilité de le faire sans (et éviter les usines à gaz ^^)

Romano83
Auteur

Au final, j'ai utilisé scrollReveal.js.
Merci chatoninja :)