JS/JS Library

[GSAP] GSAP 3 / GSAP 기본 애니메이션 문법

ui-o 2025. 8. 19. 15:40
반응형

GSAP 기본 구문

  •  애니메이션에 대한 정보를 포함하는 메서드, 타겟, 그리고 vars 객체를 가지고 있음

대상

  • GSAP에 무엇을 애니메이션으로 만들고 대상
  • document.querySelectorAll(), HTML 또는 SVG 대상의 경우 다음과 같은 선택자 사용 가능
  • ".class" 그리고. "#id". 또는 변수나 배열을 전달할 수도 있음
// use a class or ID
gsap.to(".box", { x: 200 });

// a complex CSS selector
gsap.to("section > .box", { x: 200 });

// a variable
let box = document.querySelector(".box");
gsap.to(box, { x: 200 })

// or even an Array of elements
let square = document.querySelector(".square");
let circle = document.querySelector(".circle");
                                      
gsap.to([square, circle], { x: 200 })

변수

  • vars 객체에는 애니메이션에 대한 모든 정보가 포함되어 있음
  • 애니메이션을 만들고자 하는 임의의 속성일 수도 있고, 애니메이션의 동작에 영향을 미치는 특수 속성일 수도 있음
  • duration, onComplete 또는 repeat....
gsap.to(target, {
  // this is the vars object
  // it contains properties to animate
  x: 200,
  rotation: 360,
  // and special properties
  duration: 2
})

GSAP 기본 애니메이션 함수

1. gsap.to()

  • 대상 요소를 현재 상태에서 특정 목표 상태로 애니메이션 시키는 함수
  • "지금 위치에서 → 목표 값으로 이동”
  • to()는 현재 상태에서 목표 상태로 자연스럽게 이동.
  • CSS transform, opacity, color 등 거의 모든 CSS 속성 애니메이션 가능.
// [문법]
gsap.to(target, vars);

 

  • target : 애니메이션할 요소 (CSS 선택자, DOM 노드, NodeList, 배열)
  • vars : 애니메이션 옵션 객체
    • duration: 애니메이션 시간 (초)
    • CSS 속성: x, y, opacity, scale, rotation 등
    • ease: 속도 곡선 (linear, power1.inOut, bounce 등)
    • delay: 시작 지연 시간 (초)
    • repeat: 반복 횟수 (-1이면 무한 반복)
    • yoyo: 반복 시 반대로 재생 여부

 

gsap.to(".box", {
  duration: 2,  // 2초
  x: 200,       // x축 이동
  opacity: 0.5, // 투명도 변경
  rotation: 45, // 45도 회전
  ease: "power1.out",
  delay: 0.5    // 0.5초 후 시작
});

2. gsap.from()

  • gsap.from()은 는 시작 상태를 지정하고, 현재 상태로 자연스럽게 애니메이션을 만듦
  • 요소가 지정한 시작 위치/속성 → 현재 CSS 상태로 애니메이션
  • from()은 보통 요소 등장 효과에 많이 사용
gsap.from(target, vars);
// 현재 x축이 0이라면, -300에서 시작하여 천천히 현재위치인 0으로 이동
gsap.from(".box", {
  duration: 1,
  x: -300,  // 시작 위치
  opacity: 0 // 시작 투명도
});

3. gsap.fromTo()

  • fromTo()는 시작 상태와 끝 상태를 모두 지정하고 싶을 때 사용.
  • from()과 to()의 장점을 동시에 가질 수 있음.
  • "시작 상태 → 끝 상태"를 명확히 지정하고 싶을 때 사용.
// [문법]
gsap.fromTo(target, fromVars, toVars);

 

// 왼쪽(-200px)에서 시작해 1초 동안 원래 위치(x=0)로 이동하면서 
// 투명도 0 → 1로 나타나는 애니메이션.

gsap.fromTo(".box",
  { x: -200, opacity: 0 }, // 시작 상태
  { x: 0, opacity: 1, duration: 1, ease: "power2.out" } // 끝 상태
);

4. gsap.set()

  • 초기 상태 세팅, 조건에 따라 스타일 바로 적용할 때 유용
  • gsap.set()은 즉시 스타일 적용
  • 애니메이션은 없음
  • 여러개 속성에 동시에 설정 가능
  • css를 미리 설정할 수 있지만 페이지 로딩 후 바로 보여야 하는 애니메이션의 경우 gsap보다 css에서 직접 설정하는 것이 좋음(파일을 불러오고 애니메이션이 시작되기 때문에 gsap.set설정하기 전 css가 보일 수 있음)
// [문법]
gsap.set(target, vars);
gsap.set(".box", {
  x: 100,
  opacity: 0.5,
  rotation: 30
});

5. gsap.delayedCall()

  • 지연 후 함수 실행
  • setTimeout과 유사하지만 GSAP 타임라인과 연동 가능
  • 애니메이션과 동기화할 때 유용
// [문법]
gsap.delayedCall(지연시간, 실행할함수, [함수매개변수], [this범위]);

 

매개변수 설명
지연시간 (delay) 함수 실행 전 대기 시간 (초) 2
실행할함수 (callback) 지연 후 실행할 함수 () => console.log("실행")
함수매개변수 (params) 함수에 전달할 매개변수 (선택) ["안녕", 123]
this범위 (scope) 함수 내부에서 this로 참조할 객체 (선택) this
gsap.delayedCall(2, () => {
  console.log("2초 후 실행");
});
function greet(msg) {
	console.log(msg);

}
gsap.delayedCall(4, greet, ['hi']);

 


6. gsap.timeline()

  • GSAP에서 여러 애니메이션을 순차적·동시적으로 연결할 때 핵심이 되는 기능
  • timeline은 여러 애니메이션을 하나로 묶어 관리할 수 있어
    • 순차 실행
    • 동시에 실행
    • 반복, 지연, easing 적용 등 통합 제어 가능
  • 결과적으로 애니메이션 구조를 시각적으로 관리하기 좋음
const 타임라인 = gsap.timeline({ defaults: { 기본옵션 } });

타임라인.애니메이션메서드(대상, 옵션, 위치)
         .애니메이션메서드(대상, 옵션, 위치)
         ... ;

사용방법

1. 타임라인 생성

  • 타임라인 내 모든 애니메이션에 공통 옵션 적용 가능
const 타임라인 = gsap.timeline({ defaults: { duration, ease, repeat 등 } });

2. 애니메이션 메서드

  • .to() : 목표 상태로 애니메이션
  • .from() : 시작 상태에서 현재 상태로 애니메이션
  • .fromTo() : 시작/끝 상태 모두 지정
  • .set() : 애니메이션 없이 바로 값 적용
  • .call() : 타임라인 중 특정 시점에 함수 실행

3. 위치(position) 지정 (선택적)

  • < : 이전 애니메이션과 동시에 시작
  • > : 이전 애니메이션 끝난 뒤 시작 (기본값)
  • 숫자 : 타임라인 내 특정 시간(초)에서 시작
const tl = gsap.timeline({ defaults: { duration: 1 } });

tl.to(".box1", { x: 100 })       // 0초부터 시작
  .to(".box2", { y: 50 }, "<")   // 동시에 시작
  .from(".box3", { opacity: 0 }); // 순차적으로 실행

 

반응형

'JS > JS Library' 카테고리의 다른 글

[GSAP] GSAP 4 / GSAP ease  (0) 2025.08.19
[GSAP] GSAP 2 / GSAP setting  (0) 2025.08.19
[GSAP] GSAP 1 / GSAP 기본 (gsap, tween, timeline, Sequencing  (0) 2025.08.19