-
Notifications
You must be signed in to change notification settings - Fork 10
Description
Hey! I’m currently working on this website and wanted to walk through an issue I'm running into.
I'm using GSAP animations across the site — mainly reveal and scroll-trigger effects — and on regular pages, everything works perfectly.
For my reveal animation, I’m currently using Webflow’s new GSAP animation panel, not a custom code animation. Let me know if this issue can be completely resolved by switching to a GSAP reveal animation with code — if that’s the better and more stable approach, I’m totally open to doing that.
Now, the problem happens on pages where I'm using Finsweet CMS Attributes, specifically the Filter + Load More setup.
When I click Load More, new CMS items load correctly, but the reveal animation does not trigger on those new items. They just appear with no animation — but I need them to animate exactly like the initial batch does.
Also, when filtering , some scroll animations lower on the page stop working — especially the footer animation section.
To confirm the issue:
If I completely remove the Finsweet script, all animations work fine again. So it's definitely related to CMS load + filter interfering with GSAP initialization.
So what I need help with is:
- Re-triggering the reveal animation after Load More
- Re-initializing scroll animations after filtering
- Basically refreshing GSAP when new CMS items are injected into the DOM
Thanks in advance — would really appreciate guidance on the correct event hooks or methods for re-initializing GSAP here.
🔗 Links
Loom video: https://www.loom.com/share/dd1886522cf340a088e7cbedcb20849d
Live page: https://underbite-staging.webflow.io/insights-more
📌 Footer Animation Code
<script>
gsap.registerPlugin(ScrollTrigger);
function initFooterParallax(){
document.querySelectorAll('[data-footer-parallax]').forEach(el => {
const tl = gsap.timeline({
scrollTrigger: {
trigger: el,
start: 'clamp(top bottom)',
end: 'clamp(top top)',
scrub: true
}
});
const inner = el.querySelector('[data-footer-parallax-inner]');
const dark = el.querySelector('[data-footer-parallax-dark]');
if (inner) {
tl.from(inner, {
yPercent: -25,
ease: 'linear'
});
}
if (dark) {
tl.from(dark, {
opacity: 0.5,
ease: 'linear'
}, '<');
}
});
}
// Initialize Footer with Parallax Effect
document.addEventListener('DOMContentLoaded', () => {
initFooterParallax();
});
</script>