본문 바로가기
WEB/JavaScript

[JS] GSAP

by DeveloperCat 2023. 10. 11.
반응형

웹 개발하는데 생각보다 이곳 저곳에서 소스를 많이 긁어오는구나 싶다…

임베디드 했을 때는 이런거 없이 전부 코딩했었는데, 새롭다!

 

GSAP 바로가기

↓↓↓↓↓↓↓↓↓

https://greensock.com/docs/v3/Installation

 

 

GSAP

Greensock에서 제공해주는 자바스크립트 애니메이션 라이브러리라고 한다. 

상당히 복잡한 애니메이션 구현이 가능해서 매우 인기라고 한다.

 

 

사용방법은 이전 것보다 살짝 복잡하다.

우선 저 사이트로 들어가서 GSAP을 설치해야한다.

그 다음 원하는 플러그인을 고르면 코드가 보여지는데, 이 코드를 사용하면 된다.

<!--GSAP & ScrollToPlugin-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.5.1/gsap.min.js" integrity="sha512-IQLehpLoVS4fNzl7IfH8Iowfm5+RiMGtHykgZJl9AWMgqx0AmJ6cRWcB+GaGVtIsnC4voMfm8f2vwtY+6oPjpQ==" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.5.1/ScrollToPlugin.min.js" integrity="sha512-nTHzMQK7lwWt8nL4KF6DhwLHluv6dVq/hNnj2PBN0xMl2KaMm1PM02csx57mmToPAodHmPsipoERRNn4pG7f+Q==" crossorigin="anonymous"></script>

 

HTML에 위에 코드까지 적으면, JavaScript에서 하기와 같이 사용이 가능하다.

 

/**
* 페이지 스크롤에 따른 요소 제어
*/

// 페이지 스크롤에 영향을 받는 요소들을 검색!
const badgeEl = document.querySelector('header .badges')
const toTopEl = document.querySelector('#to-top')

// 페이지에 스크롤 이벤트를 추가!
// 스크롤이 지나치게 자주 발생하는 것을 조절(throttle, 일부러 부하를 줌)
window.addEventListener('scroll', _.throttle(function () {

  // 페이지 스크롤 위치가 500px이 넘으면.
  if (window.scrollY > 500) {
    // Badge 요소 숨기기!
    gsap.to(badgeEl, .6, {
      opacity: 0,
      display: 'none'
    })

    // 상단으로 스크롤 버튼 보이기!
    gsap.to(toTopEl, .2, {
      x: 0
    })
  // 페이지 스크롤 위치가 500px이 넘지 않으면.
  } else {
    // Badge 요소 보이기!
    gsap.to(badgeEl, .6, {
      opacity: 1,
      display: 'block'
    })

    // 상단으로 스크롤 버튼 숨기기!
    gsap.to(toTopEl, .2, {
      x: 100
    })
  }
}, 300))

// 상단으로 스크롤 버튼을 클릭하면,
toTopEl.addEventListener('click', function () {
  // 페이지 위치를 최상단으로 부드럽게(0.7초 동안) 이동.
  gsap.to(window, .7, {
    scrollTo: 0
  })
})

GSAP을 이용해서 스크롤에 따라 보여지고 사라지는 배지 구현이 가능하다.

반응형

'WEB > JavaScript' 카테고리의 다른 글

[JS] querySelector  (0) 2023.10.22
[JavaScript] const & let  (0) 2023.10.22
[JS] Lodash  (0) 2023.10.11
[JS] ScrollMagic  (0) 2023.10.11
[JS] Swiper  (0) 2023.10.11