Front-end/gsap

강력한 애니메이션 GSAP, 사용법과 예제 정리

mooyou 2025. 3. 11. 21:47
728x90
300x250
SMALL

GSAP(GreenSock Animation Platform)은 강력한 JavaScript 애니메이션 라이브러리로, HTML, CSS, SVG, Canvas, WebGL등의 요소를 부드럽고 효율적으로 애니메이션할 수 있도록 도와준다.

 


 

GSAP의 주요 특징

1. 강력한 성능 : 일반적인 CSS 애니메이션보다 빠르고 부드럽게 작동한다.

2. 다양한 애니메이션 가능 : 위치, 크기, 투명도, 색상, 회전 등 다양한 속성 애니메이션 지원

3. 체이닝(Chaining)과 타임라인(Timeline) 지원 : 여러 애니메이션을 순차적으로 또는 동시에 실행 가능

4. 반응형 지원 : 반응형 웹에서도 문제없이 동작

5. 스크롤 애니메이션 연동 가능 : scrollTrigger 플러그인으로 스크롤 기반 애니메이션 구현 가능


 

1. GSAP 기본 예제

아래 코드는 .box 요소를 오른쪽으로 이동시키는 간단한 GSAP 애니메이션이다.

 

기본 애니메이션(gsap.to())

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>GSAP 기본 예제</title>
    <style>
        .box {
            width: 100px;
            height: 100px;
            background-color: tomato;
            position: absolute;
            top: 50px;
            left: 0;
        }
    </style>
</head>
<body>

    <div class="box"></div>

    <script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.2/gsap.min.js"></script>
    <script>
        gsap.to(".box", { x: 300, duration: 2, ease: "power2.out" });
    </script>

</body>
</html>
  • .box 요소가 x:300px 만큼 이동하며, 애니메이션은 2초 동안 진행된다.
  • ease: "power2.out"은 애니메이션이 부드럽게 끝나는 효과를 준다.

2. GSAP Timeline 활용

여러 개의 애니메이션을 순차적으로 실행하고 싶다면 gsap.timeline()을 사용할 수 있다.

순차적인 애니메이션(gsap.timeline())

const tl = gsap.timeline();

tl.to(".box", { x: 300, duration: 1 })  // 오른쪽 이동
  .to(".box", { y: 150, duration: 1 })  // 아래 이동
  .to(".box", { rotation: 360, duration: 1 }); // 회전

 

  1. .box가 오른쪽{x:300px}으로 이동
  2. 이후 아래(y: 150px)로 이동
  3. 마지막으로 360도 회전
  4. timeline을 사용하면 자연스러운 애니메이션이 순차적으로 진행됨

3. GSAP ScrollTrigger(스크롤 애니메이션)

GSAP의 ScrollTrigger 플러그인을 사용하면 스크롤과 연동된 애니메이션을 만들 수 있다.

<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.2/gsap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.2/ScrollTrigger.min.js"></script>

<script>
    gsap.registerPlugin(ScrollTrigger);

    gsap.to(".box", {
        x: 300,
        duration: 2,
        scrollTrigger: {
            trigger: ".box",  // 트리거 요소
            start: "top 80%", // 시작 지점 (화면의 80% 위치에서 시작)
            end: "top 30%",   // 종료 지점
            scrub: true       // 스크롤을 따라 움직이도록 설정
        }
    });
</script>

 

  • .box가 사용자가 스크롤을 내릴 때 x: 300px 이동
  • scrub : true를 설정하면 스크롤 속도에 맞춰 애니메이션이 실행됨

4. GSAP Stagger(여러 요소 동시에 애니메이션)

여러 개의 요소를 동시에 애니메이션할 때 stagger를 사용하면 일정한 간견을 둘 수 있다.

gsap.to(".box", { y: 100, duration: 1, stagger: 0.2 });
  • .box가 여러 개 있을 때, 각 요소가 0.2초 간격으로 아래(y:100px)로 이동.

정리

GSAP은 애니메이션을 쉽게 조작할 수 있는 강력한 라이브러리다.

기본적인 GSAP.to(), gsap.timeline(), scrollTrigger, stagger등을 조합하면 다양한 애니메이션 효과를 구현할 수 있다.

React 프로젝트에서도 GSAP을 사용할 수 있으며, useEffect와 함께 사용하면 부드러운 UI 애니메이션을 만들 수 있다.

 

728x90
반응형
LIST