ScrollTrigger tutorial for beginners

ScrollTrigger Tutorial for Beginners – Part 1

ScrollTrigger from GreenSock is the new ScrollMagic, simple as that! And this is a simple ScrollTrigger tutorial for beginners.

Do you want to trigger your GSAP animations as the user scrolls down the page? You might have used ScrollMagic in the past, now it is ScrollTriggers turn.

ScrollTrigger does what ScrollMagic did and much more, and the best thing about it is the awesome cross-browser support, active development, and the very helpful GreenSock Forum to ask questions if you get stuck.

What will you learn:

View Demo →

If you prefer to learn by watching videos feel free to join me in GreenSock 101.

How to include GreenSock and ScrollTrigger in your project

ScrollTrigger Installation

ScrollTrigger is a free plugin from GreenSock and the easiest way to include it in your projects is to get the link from the CDN.

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

Include the above links at the bottom of your HTML page.

If you are using a module bundler such as Webpack or Parcel, you can install GreenSock through NPM and import it to your project.

// install GSAP
npm install gsap
// or
yarn add gsap

// import GSAP and ScrollTrigger
import { gsap } from "gsap";
import { ScrollTrigger } from "gsap/ScrollTrigger";

// register ScrollTrigger
gsap.registerPlugin(ScrollTrigger);

You will need to register ScrollTrigger in your module to avoid it being removed by treeshaking.

If you want to use it in your React project check out How to use ScrollTrigger with React.

How to trigger your animation

ScrollTrigger

Firstly we will create the HTML markup for the header and give it some padding-top and bottom.

ScrollTrigger tutorial for beginners
<header>
    <div class="scrollTriggerLogo">
       <img src="..." />
    </div>
    <h1>ScrollTrigger Tutorial for Beginners</h1>
</header>

Now we want to fade out the header before it leaves the viewport.

gsap.to('header', { autoAlpha: 0 });

This would fade it out straight on page load, but we want the user to trigger the start of this tween.

gsap.to('header', { autoAlpha: 0, 
    scrollTrigger: {
        trigger: '.scrollTriggerLogo',
        start: 'top top+=100',
        markers: true
    } 
});

We create a simple GSAP .to tween and fade the header out to autoAlpha: 0. This is GSAP’s shorthand for animating both the opacity and visibility.

Then we are specifying the ScrollTrigger with some options for this tween.

.scrollTriggerLogo is the trigger element that will trigger our animation.

By default, every ScrollTrigger animation is triggered when the top of the trigger hits the bottom of the viewport, but we can overwrite it by specifying start: 'top top+=100'.

ScrollTrigger start option.

With these settings, it will be triggered when the top of .scrollTriggerLogo is 100px from the top of the viewport.

markers: true is a handy way to see visually when the animation is triggered.

When the start label meets the scroller-start, good things happen.

Enjoying this ScrollTrigger tutorial for beginners? Join me in GreenSock 101 to learn even more.

How to scrub through your animation

ScrollTrigger scrub

The above example will fade out the header over the duration of 1 second, but what if we wanted the user to be in control of the fading out?

ScrollTrigger scrub option.

We can specify scrub: true to make this happen.

gsap.to('header', { autoAlpha: 0, 
    scrollTrigger: {
      ...
      scrub: true,
      ...
    } 
});

The fading out is now controlled by the scrollbar. If you scroll down slowly, it will fade out slowly.

Now you are scrubbing through the tween.

How to define the duration of scrolling animation

ScrollTrigger end

By default, every scrub animation will be completed when the bottom of the trigger element hits the top of the viewport.

You can customize this by specifying your own end value.

gsap.to('header', { autoAlpha: 0, 
    scrollTrigger: {
      ...
      end: '+=200',
      ...
    } 
});

end: '+=200' means that the tween will end after scrolling 200px beyond the start.

When the end meets the scroller-end, your tween or timeline will be fully completed.

ScrollTrigger end value

Other options for the end value could be an absolute value in pixels.

end: 300 would mean that it would take 300px of scrolling down to complete the tween, regardless of where the start is.

You most likely want to use the first option, unless your element is at the top of the page.

Final Demo

4864

Conclusion

Now you know how to create a simple GreenSock tween and trigger it at the right time using ScrollTrigger.

You have also learned how to set a custom start and end values to be in full control of your scrolling animation.

In the next part of this tutorial, you will learn how to use toggleActions, toggleClass, and how to set function based values for your scrollTrigger.

Do you want to learn more about GreenSock and ScrollTrigger? Join me in the free online course GreenSock 101 or step it up in the premium Practical GreenSock.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.