jlmakes / scrollreveal

Animate elements as they scroll into view.
https://scrollrevealjs.org/
22.3k stars 2.26k forks source link

Add a ScrollReveal().refresh(); method #565

Open PubliAlex opened 9 months ago

PubliAlex commented 9 months ago

Hello,

When you deal with lazyloaded images you will always have issue with scrollreveal that calculate animation trigger before content jump.

There is alreay a solution, it's to call the reveal when the image is loaded, something like that :

const lazyImages = document.querySelectorAll('img[loading="lazy"]');

lazyImages.forEach(function(el) {
  el.addEventListener('load', function(e) {
    ScrollReveal().reveal('.animate');
  });
});

The limit of that solution is that you have to specifically call the animation after image have been loaded in order to work. Instead of that, it would be great to be able to call a ScrollReveal().refresh() that would recalculate all the trigger positions of scrollreveal now that content has jumped.

It would work the same way than ScrollReveal().sync() except that sync() method seems to be useful when you add new elements to the dom, not to recalculate position of existing elements.

Best regards,