[javascript] GSAP를 활용한 헤로(Hero) 섹션 애니메이션 개발

헤로(Hero) 섹션은 웹 페이지의 중요한 부분 중 하나로, 사용자의 시선을 끌고 주목을 받는 역할을 합니다. 이 글에서는 GSAP(Greensock Animation Platform)를 사용하여 헤로 섹션에 다양한 애니메이션 효과를 개발하는 방법에 대해 알아보겠습니다.

GSAP란?

GSAP는 JavaScript 기반의 애니메이션 라이브러리로, 빠르고 강력한 애니메이션 효과를 구현할 수 있습니다. GSAP를 사용하면 DOM 요소를 트윈(tween)이라 불리는 애니메이션 객체로 만들 수 있으며, 시간에 따라 속성 값을 변경하여 부드러운 애니메이션을 구현할 수 있습니다.

GSAP 설치하기

GSAP를 사용하기 위해서는 먼저 해당 라이브러리를 설치해야 합니다. 다음 명령을 사용하여 GSAP를 설치할 수 있습니다.

npm install gsap

GSAP를 활용한 헤로 섹션 애니메이션 개발 예시

이제 GSAP를 사용하여 헤로 섹션에 애니메이션 효과를 추가해보겠습니다. 아래는 HTML, CSS 및 JavaScript 예시 코드입니다.

<section class="hero-section">
    <div class="hero-content">
        <h1>안녕하세요, 환영합니다!</h1>
        <p>GSAP를 활용한 헤로 섹션 애니메이션 개발 예시입니다.</p>
        <a href="#" class="cta-button">더 알아보기</a>
    </div>
    <div class="hero-image">
        <img src="hero-image.jpg" alt="Hero Image">
    </div>
</section>
.hero-section {
  position: relative;
  width: 100%;
  height: 400px;
}

.hero-content {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  text-align: center;
}

.hero-content h1 {
  font-size: 36px;
  color: #ffffff;
}

.hero-content p {
  font-size: 18px;
  color: #ffffff;
}

.hero-content .cta-button {
  display: inline-block;
  margin-top: 20px;
  padding: 10px 20px;
  background-color: #ffffff;
  color: #000000;
  text-decoration: none;
}

.hero-image {
  position: absolute;
  top: 0;
  right: 0;
  width: 400px;
  height: 100%;
  overflow: hidden;
}

.hero-image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
import { gsap } from "gsap";

// 헤로 섹션 요소 찾기
const heroSection = document.querySelector(".hero-section");
const heroContent = document.querySelector(".hero-content");
const heroImage = document.querySelector(".hero-image");

// 트윈 애니메이션 정의
const tl = gsap.timeline();
tl.fromTo(heroContent, { opacity: 0, y: 100 }, { opacity: 1, y: 0, duration: 1 });
tl.fromTo(heroImage, { scaleX: 0, scaleY: 0 }, { scaleX: 1, scaleY: 1, duration: 1 }, "<");

// 스크롤 이벤트 핸들러 등록
window.addEventListener("scroll", () => {
  const scrollY = window.scrollY;
  
  // 헤로 섹션 스크롤 위치에 따라 애니메이션 실행
  if (scrollY > heroSection.offsetTop - window.innerHeight / 2) {
    tl.play();
  } else {
    tl.reverse();
  }
});

위의 예시 코드에서는 GSAP를 사용하여 hero-content 요소와 hero-image 요소에 애니메이션 효과를 적용했습니다. GSAP의 트윈 애니메이션을 사용하여 opacity, y, scaleX, scaleY 등의 속성 값을 변경하고, 애니메이션을 실행/반전하는 것을 볼 수 있습니다.

결론

GSAP를 사용하면 간편하게 웹 페이지의 헤로 섹션에 다양한 애니메이션 효과를 추가할 수 있습니다. GSAP는 빠르고 강력한 애니메이션 효과를 제공하며, 다른 애니메이션 라이브러리와 비교하여 성능 면에서도 우수한 선택지입니다. GSAP를 활용하여 흥미로운 웹 페이지 디자인을 개발해보세요.