HTML:


  <!DOCTYPE html>
  <html lang="en">
  <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <link rel="stylesheet" href="https://codepen.io/GreenSock/pen/xxmzBrw.css">
      <link rel="stylesheet" href="style.css">
      <script defer src="https://unpkg.com/gsap@3/dist/gsap.min.js"></script>
      <script defer src="https://unpkg.com/gsap@3/dist/ScrollTrigger.min.js"></script>
      <script defer src="main.js"></script>
      <title>Document</title>
  </head>
  <body>
    <div class="wrapper">
      <div class="content">
        <section class="section hero"></section>
        <section class="section gradient-purple"></section>
        <section class="section gradient-blue"></section>
      </div>
      <div class="image-container">
        <img src="https://assets-global.website-files.com/63ec206c5542613e2e5aa784/643312a6bc4ac122fc4e3afa_main%20home.webp" alt="image">
      </div>
    </div>
  </body>
  </html>




CSS:

     
      /* author: https://codepen.io/GreenSock/pen/YzbPYMx
      GSAP
      */
      * {
          margin: 0;
          padding: 0;
          box-sizing: border-box;
        }
       
        .wrapper,
        .content {
          position: relative;
          width: 100%;
          z-index: 1;
        }
       
        .content {
          overflow-x: hidden;
        }
       
        .content .section {
          width: 100%;
          height: 100vh;
        }
       
        .content .section.hero {
          background-image: url(https://images.unsplash.com/photo-1589848315097-ba7b903cc1cc?q=80&w=2070&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D);
          background-position: center center;
          background-repeat: no-repeat;
          background-size: cover;
        }
       
        .image-container {
          width: 100%;
          height: 100vh;
          position: absolute;
          top: 0;
          left: 0;
          right: 0;
          z-index: 2;
          perspective: 500px;
          overflow: hidden;
        }
       
        .image-container img {
          width: 100%;
          height: 100%;
          object-fit: cover;
          object-position: center center;
        }
       



JS:

   
   console.clear();

    gsap.registerPlugin(ScrollTrigger);

    window.addEventListener("load", () => {
      gsap
        .timeline({
          scrollTrigger: {
            trigger: ".wrapper",
            start: "top top",
            end: "+=150%",
            pin: true,
            scrub: true,
            markers: true
          }
        })
        .to("img", {
          scale: 2,
          z: 350,
          transformOrigin: "center center",
          ease: "power1.inOut"
        })
        .to(
          ".section.hero",
          {
            scale: 1.1,
            transformOrigin: "center center",
            ease: "power1.inOut"
          },
          "<"
        );
    });