Skip to content
Snippets Groups Projects
HomeAnimation.tsx 1.58 KiB
Newer Older
import gsap from "gsap"; 
import { useGSAP } from "@gsap/react";
import { ScrollTrigger } from "gsap/dist/ScrollTrigger";
import { useRef } from 'react';
import { MotionPathPlugin } from "gsap/dist/MotionPathPlugin";
import vectorImg from "https://static.igem.wiki/teams/5247/placeholders/vector.webp";
export function HomeAnim() {
  gsap.registerPlugin(useGSAP);
  gsap.registerPlugin(MotionPathPlugin);
  gsap.registerPlugin(ScrollTrigger);
  const vectorRef = useRef(null);
  useGSAP(
    () => {
    gsap.registerPlugin(ScrollTrigger);
    gsap.registerPlugin(useGSAP);
    gsap.registerPlugin(MotionPathPlugin);
    
    gsap.defaults({ease: "none"});

    const main = gsap.timeline({
      scrollTrigger: {
        trigger: "svg",
        scrub: true,
        start:"top middle",
        end: "bottom middle"
      }
    })
    .from(".homeAnimLine", {drawSVG: 0}, 0)
    .to(vectorRef.current, {motionPath:{
      path:".homeAnimLine",
      align:".homeAnimLine",
      alignOrigin:[0.5, 0.5],
    }}, 0)
    
    console.log(main)
  },
  );

 
  return (
    <div className="row col">
      <svg id="svg" viewBox="0 0 1200 4000">
        <path d="
        M 50 50 
        C 500 -50 1000 100 1870 50 
        C 1820 220 2024 528 1870 590 
        C 1351 678 118 451 54 561 
        C 3 672 12 985 55 985 
        C 586 1090 1342 898 1881 1038 
        C 1994 1194 1986 1568 1890 1681 
        C 1751 1803 281 1481 168 1646 
        C 81 1794 21 1977 168 2142 
        C 499 2246 1403 2325 1081 2142"/>
      <img ref={vectorRef} src={vectorImg} alt="vectorImg"/>