[JS-GSAP] scrollTrigger

2023. 1. 13. 10:57Javascript

1. scrollTrigger

내 화면은 사이트 헤더 쪽에 있는데 푸터 쪽에서 애니메이션이 실행되는 사태를 막아야 한다.

그렇기 때문에 ScrollTrigger가 중요하다.

<!doctype html>
<html class="no-js" lang="">
<head>
  <meta charset="utf-8">
  <meta name="description" content="">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <style>
    body {
      margin: 0;
      padding: 0;
      background-color: #111;
      background-image: linear-gradient(rgba(255, 255, 255, 0.3) 2px, transparent 2px),
      linear-gradient(90deg, rgba(255, 255, 255, 0.3) 2px, transparent 2px),
      linear-gradient(rgba(255, 255, 255, 0.1) 1px, transparent 1px),
      linear-gradient(90deg, rgba(255, 255, 255, 0.1) 1px, transparent 1px);
      background-size: 100px 100px, 100px 100px, 20px 20px, 20px 20px;
      background-position: -2px -2px, -2px -2px, -1px -1px, -1px -1px;
    }

    .box {
      width: 100px;
      height: 100px;
      box-sizing: border-box;
      border: 5px solid grey;
      margin: 1200px 0;
    }
    .box1 {background: wheat;}
    .box2 {background: cornflowerblue;}
    .box3 {background: salmon;}
  </style>
</head>

<body>
<div>
  <div>
    <div class="box box1"></div>
    <div class="box box2"></div>
    <div class="box box3"></div>
  </div>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.11.0/gsap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.11.4/ScrollTrigger.min.js"></script>
<script>
  gsap.registerPlugin(ScrollTrigger)

  // toggleActions: onEnter, onLeave, onEnterBack, onLeaveBack
  // action: play, pause, resume, reset, restart, complete, reverse, none

  gsap.to('.box1', {x: 400, rotation: 360, duration: 4})
  gsap.to('.box2', {
    x: 400,
    rotation: 360,
    duration: 4,
    scrollTrigger: {
      markers: true,
      trigger: '.box2',
      start: 'top 100%', // 정수리가 보이면
      end: 'bottom 100%',
      toggleActions: 'play none none none'
    }
  })
  gsap.to('.box3', {
    x: 400,
    rotation: 360,
    duration: 4,
    scrollTrigger: {
      markers: true,
      trigger: '.box3',
      start: 'center center',
      end: 'bottom 10%',
      toggleActions: 'play pause reverse none'
    }
  })
</script>
</body>
</html>

뒤로가기 했을 때도 보여주세요! 라고 하면 toggleActions: 'play none reverse none' 으로 적는다.
스크롤 올리면 뒤로갔다가 다시 내리면 play된다

 

 

onEnter : 시작하면 play 해라

 

 

onLeave : 떠나면 pause 멈춰라

 

onEnterBack: 스크롤 위로 잠깐 올리면 reverse 뒤로가라

 

 

onLeaveBack : 스크롤 계속해서 위로 올라가면 none (default 값) 앞의 reverse의 말을 듣게됨

 

 

참고

 

 

 

'Javascript' 카테고리의 다른 글

[JS-GSAP] motion path 모션 패스  (0) 2023.01.17
[JS-GSAP] toggleActions (ex카카오뱅크)  (0) 2023.01.13
[JS-GSAP] stagger  (0) 2023.01.13