From 9f45367305cf4c4e1b6b1a99fa0fd5c10c17ac68 Mon Sep 17 00:00:00 2001 From: marzban-dev Date: Wed, 19 Mar 2025 18:00:37 +0330 Subject: [PATCH] Updated --- frontend/components/home/ProductsShowcase.vue | 167 +++++++++--------- 1 file changed, 79 insertions(+), 88 deletions(-) diff --git a/frontend/components/home/ProductsShowcase.vue b/frontend/components/home/ProductsShowcase.vue index 206cb54..c533e8a 100644 --- a/frontend/components/home/ProductsShowcase.vue +++ b/frontend/components/home/ProductsShowcase.vue @@ -6,7 +6,7 @@ import useHomeData from "~/composables/api/home/useHomeData"; // state -const { data : homeData } = useHomeData(); +const { data: homeData } = useHomeData(); const { $gsap: gsap, $ScrollTrigger: ScrollTrigger } = useNuxtApp(); @@ -17,71 +17,60 @@ let scrollTrigger: ScrollTrigger; onMounted(() => { gsapTimeline = gsap.timeline(); - - gsapTimeline - .fromTo("#header-navbar", { - background: "white", - filter: "invert(0%)" - }, { - background: "transparent", - filter: "invert(100%)" - }); - const showcaseElements = gsap.utils.toArray(".showcase-slide"); - showcaseElements.forEach((element, index) => { - - gsapTimeline.fromTo(element, index === 0 ? { - opacity: 1, - scale: 1, - // rotateX: -25, - y: 0, - ease: "none" - } : { - opacity: 0, - scale: 0.97, - // rotateX: -25, - y: 20, - ease: "none" - }, { - opacity: 1, - scale: 1, - // rotateX: 0, - y: 0, - ease: "none" - }, index === 0 ? "-=0%" : undefined); - - if (index < showcaseElements.length - 1) { - gsapTimeline.to(element, { - opacity: 0, - scale: 1.03, - // rotateX: 25, - y: -20, - ease: "none" - }); - } - - }); - - gsapTimeline.to("#header-navbar", { - background: "white", - filter: "invert(0%)" - }); - - scrollTrigger = ScrollTrigger.create({ - trigger: "#products-showcase-container", - animation: gsapTimeline, - scrub: 1, - pin: true, - start: "top top", - // markers: true, - end: "bottom top" - }); - setTimeout(() => { - scrollTrigger.refresh() - }, 1000); + showcaseElements.forEach((element, index) => { + gsapTimeline.fromTo(element, index === 0 ? { + opacity: 1, + scale: 1, + // rotateX: -25, + top: 0, + ease: "none" + } : { + opacity: 0, + scale: 1, + // rotateX: -25, + top: 20, + ease: "none" + }, { + opacity: 1, + scale: 1, + // rotateX: 0, + top: 0, + ease: "none" + }, index === 0 ? "-=0%" : undefined); + + if (index < showcaseElements.length - 1) { + gsapTimeline.to(element, { + opacity: 0, + scale: 1.03, + // rotateX: 25, + top: -20, + ease: "none" + }); + } + + }); + + scrollTrigger = ScrollTrigger.create({ + trigger: "#products-showcase-container", + animation: gsapTimeline, + scrub: 1, + pin: true, + start: "top top", + anticipatePin: 1, + // markers: true, + end: "bottom top" + }); + + setTimeout(() => { + scrollTrigger.update(); + scrollTrigger.refresh(); + }, 1000); + + }, 1000); }); onUnmounted(() => { @@ -92,33 +81,35 @@ onUnmounted(() => { \ No newline at end of file