Introduction to Web Animations with GSAP
Tags: gsap, webdev, javascript, react
Published: 2023-04-19 20:33:56

GSAP, or GreenSock Animation Platform, is a powerful JavaScript animation library that is used by web developers and designers to create interactive and engaging websites. GSAP is known for its versatility, speed, and ease of use, making it a popular choice among developers worldwide.

Today, we're going to learn the basics of GSAP, and get our hands dirty with some animations.

## Prerequisites
I recently asked a fellow developer for his secret in learning GSAP. "It's just CSS!", he said.
For one to get good at GSAP, a solid proficiency in CSS is needed. The stronger your CSS, the more complex animations you can make!
We will be doing this tutorial with React, and so a good knowledge of it will be needed as well.

## Setting up GSAP in your React Project
Setting up GSAP in a React file involves a few steps, but it is a straightforward process. 

1.Install GSAP into your React App:
This is done by running the `npm install gsap` from your terminal.

2.Import the GSAP Module:
In your React file where you want to use GSAP, import the gsap module at the top of the file:
`import { gsap } from "gsap";`

We will be making a really simple animation like the one shown below:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bfa4j5jxouz296cxs8vd.gif)

## Building the Components:

This page has two components: A Navigation Bar and a large text.

Here's what the navigation bar looks like in react:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8md56938bemann3e3aqw.png)

And the Large Text:
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8m28iatioz7ich9p43ri.png)

##Adding GSAP
The next thing to do is to add your animations to your component. When working with GSAP, I discovered that GSAP can read and execute animations even when they're not written in the component being targeted. Cool right?

With that in mind, let's add our animations to our Large Text component. We'll do that in a useEffect Hook:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/w3h4v7nm18gjxa1cmjdj.png)

The first part animates the navigation bar by moving it from a position 30% off the top of the screen to its original position at the top of the screen over a duration of 1 second.

The second part animates the large text by moving it from a position 500 pixels below its original position to its original position over a duration of 1.8 seconds. The ease option is used to add a smoothing effect to the animation, making it look more natural.

The complete code is shown below:
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/csu9typh9vn6i7eqrf4k.png)




## Understanding the Animation: The GSAP Object

The `gsap` object is the main object provided by the GSAP library. It contains all of the methods and properties needed to create powerful animations such as `gsap.to()`, `gsap.from()`, and `gsap.fromTo()`, and is the primary way to interact with the GSAP library in your JavaScript code.


`gsap.fromTo()` is a method provided by the GSAP library that allows you to define the starting and ending states of an animation in a single call. This method is a convenient way to create more complex animations that require multiple changes to an element's properties.

The `fromTo()` method takes three arguments:

- The target element(s) to animate, specified as a CSS selector or DOM element.
From our animation, our target elements are our navigation bar element with a class of ".navbar", and our large text, with a class of ".header".




- An object defining the starting properties of the animation, which in our case would be:

`{y:"-30vh"}` for our navigation bar, and:
`{y:500}` for our large text.

- An object defining the ending properties of the animation, which in our case would be:

`{ y:0, duration:1,}` for our navigation bar, and:
`{ y: 0,ease: "power3.out"}` for our large text.

- gsap.timeline()

`gsap.timeline()` is a method provided by the GSAP library that creates a timeline instance for sequencing multiple animations. The timeline allows you to control the timing and sequencing of multiple animations as a group, and you can add, remove or adjust individual animations within the timeline.


##Conclusion
GSAP is a powerful JavaScript library that enables web developers to create complex and engaging animations and interactions. It offers a range of animation tools and features, such as timeline controls and easing functions, and is easy to learn and use. Whether you're a beginner or an experienced developer, GSAP is a versatile and reliable animation library that can enhance the user experience of your web projects.