• 검색어를 입력해 주세요.
  • 검색어를 입력해 주세요.
디자인키트 0
블로그 전체목록
화살표

보고계신 기능이 적용된
템플릿이에요!

HTML소스를 구매하시면
전체 소스를 활용하실 수 있어요!

  • 템플릿을 찾지 못했어요!

400여개 디자인

더 많은 템플릿 보기

GSAP 가로스크롤 텍스트 애니메이션: 한 글자씩 사라지는 안개 효과 구현하기

CSS 25.09.01 조회 30

GSAP 가로스크롤 텍스트 애니메이션: 한 글자씩 사라지는 안개 효과 구현하기

웹사이트에서 스크롤 애니메이션은 사용자에게 몰입감을 주는 중요한 요소입니다.

특히 텍스트가 한 글자씩 안개처럼 사라지는 효과는 부드럽고 감각적인 인상을 줍니다.

이번 글에서는 GSAP ScrollTrigger를 활용해, 가로 스크롤에 따라 텍스트 한 글자씩 사라지는 모션을 구현하는 방법을 소개합니다.

이런 텍스트 애니메이션은 특히 브랜드 캠페인이나 프로모션 페이지에서 사용하면 시각적 임팩트를 극대화할 수 있습니다. 


➰➰➰


✨ 오늘 구현할 애니메이션 기능 요약 

✔ 텍스트를 span 태그로 감싸 글자 단위로 분리(split)

✔ GSAP을 활용한 텍스트 애니메이션을 각 글자에 적용

✔ 가로 스크롤 진행에 따라 글자의 opacity, transform, filter 속성이 함께 변하도록 설정



✏️ HTML 구조는 이렇게 생겼어요

✔ 가로스크롤 구조를 위한 sticky 영역 추가 (GSAP ScrollTrigger의 pin 속성과 동일)


1
2
3
4
5
6
7
8
9
<section id="inc01">
  <div class="group-collection">
    <div class="sticky-wrapper">
      <div class="sticky-container">
        <div class="cont"><h2 class="text-l">Collection</h2></div>
      </div>                      
    </div>
  </div>
</section>
cs



✏️ CSS로 효과 구현하기

✔ 한 글자씩 분리된 글자(span)을 독립된 애니메이션 단위로 만들기 위해 inline-block을 설정


1
2
3
4
5
6
7
8
9
10
#inc01{position:relative;background-color:#000}
#inc01 .inner{min-width:var(--main-width);margin:0 auto;padding:0 80px}
#inc01 .sticky-container{position:sticky;top:0;left:0;height:100vh;overflow:hidden}
/* Collection 텍스트 모션 */
#inc01 .group-collection .sticky-wrapper{height:600vh}
#inc01 .group-collection .sticky-container{display:flex;align-items:center}
#inc01 .group-collection .cont{display:flex;align-items:center;gap:140px}
#inc01 .group-collection .cont .text-l{display:flex;padding-left:130px;padding-right:130px;font-size:130px;color:#fff;font-family:var(--e-font-gothic)}
#inc01 .group-collection .cont .text-l .char{display:inline-block
cs



✏️ 모션은 이렇게 작성해요

1. 글자 분리(split type) + 텍스트 안개 효과

✔ 문자열을 한 글자씩 잘라 로 감싸 DOM에 삽입해, 글자 단위 애니메이션이 가능하도록 만드는 방식

✔ transform, opacity, filter 속성을 활용하여 순차적 안개 효과 적용


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// text split motion
const target = document.querySelector('#inc01 .group-collection h2.text-l');
const characters = target.textContent.split('');
const wrappedText = characters
  .map(char => `<span class="char">${char}</span>`)
  .join('');
target.innerHTML = wrappedText;
 
const inc01Text = gsap.timeline({
  scrollTrigger:{
    trigger:"#inc01",
    start:"top top",
    end:"50% top",
    scrub:1,
    invalidateOnRefresh: true,
  }
});
inc01Text.to("#inc01 .group-collection h2.text-l .char",{filter:"blur(0.8em)",yPercent:-150,stagger:0.5,ease:"power2.in"},"<");
cs


2. 가로 스크롤

✔ 콘텐츠 전체 길이만큼 왼쪽으로 이동시키고(xPercent:-100), 마지막 요소가 화면 안에 잘 보이도록 브라우저 너비만큼 추가(x: window.innerWidth) 조정하는 방식


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//가로 스크롤
const inc01Collection = gsap.timeline({
  scrollTrigger:{
    trigger:"#inc01 .group-collection",
    start:"top top",
    end:"bottom bottom",
    scrub:1,
    invalidateOnRefresh:true
  }
});
                       
inc01Collection.to("#inc01 .group-collection .cont",{
  xPercent:-100,
  x:() => {
    return window.innerWidth;
  }
})
 
cs



See the Pen GSAP 가로스크롤 텍스트 애니메이션: 한 글자씩 사라지는 안개 효과 구현하기 by designkits (@designkits) on CodePen.



➰➰➰

 

✨ 관련 링크 ✨ 
블로그 전체목록
디자인키트 카카오상담