GSAP library – sensible GSAP animation tutorial and examples

If there solely was a option to create spectacular JavaScript animations simply and with out having to fret about browser compatibility… oh wait, there’s one! Or maybe a couple of. As we speak, you’ll see find out how to develop such animations with the GreenSock Animation Platform, or GSAP. Why did I select this one? How does it actually work? What can it do for you? Let’s discover out.

Have you ever ever labored on a undertaking which required you to create advanced animations in a JavaScript software that depends on frequent consumer interactions?

I simply have. As we speak I’m going to let you know extra a couple of device that made this expertise far more attention-grabbing.

The problem

My newest expertise with JavaScript animations happened when certainly one of our purchasers requested my workforce to develop a brand new characteristic for his or her extremely safe software. It was presupposed to be one thing akin to a lock display.

For those who ever used a banking software in your life, you undoubtedly acknowledge the display that exhibits up when you’re logged out of your session attributable to a interval of inactivity.

This one labored very like that, aside from one small element.

The distinction was that as a substitute of being logged out completely, you get a lock display with an possibility to return to the app by writing your PIN quantity.


I admit that in follow, it quantities to just about the identical factor for the consumer. From a technical standpoint, it’s a completely different conduct as you don’t must kind in your full credentials.

Apart from safety, the shopper enormously valued one other facet of their app – its look. The undertaking was designed with nice care and a spotlight to element. It included advanced and effectively–optimized animations. The lock display was to be no completely different.

What does it imply?

It implies that I wanted to provide you with some actually nice-looking JavaScript animations!

Why the GSAP library?

JavaScript-based animations aren’t a straightforward topic. The very first thing that got here to my thoughts was to discover a library that might make the event sooner. Caring for numerous browser inconsistencies in rendering JS animations was one other necessary goal. Lengthy story brief, I picked the GreenSock Animation Platform (GSAP). 🧦

GSAP is a strong JavaScript library and a sturdy JavaScript toolset that makes it simpler to create skilled grade animation. You need to use it to design every kind of JS animations, starting from easy manipulations of particular person DOM parts to advanced results that contain a number of segments triggered at particular moments. Such results embrace:

  • Progressively revealing or hiding SVG strokes to attain the impact of drawing in real-time (the DrawSVGPlugin plugin).
  • Turning (morphing) one SVG form into one other easily (MorphSVGPlugin).
  • Shifting generic objects alongside a predetermined path (MotionPathPlugin).

GSAP provides you exact management over CSS properties, making it potential to create skilled grade animations. It additionally gives superior playback controls and accessibility pleasant animations. This specific library met the necessities of the undertaking better of all obtainable choices for a few causes:

  • It makes it potential to implement all forms of animations that had been related to the undertaking.
  • It could possibly animate something JavaScript, that’s, any numerical property of JavaScript or a given object.
  • GSAP is so complete that it will probably animate any CSS/JS property supported by a given browser.
  • After which, there’s the group. The authors created a dialogue discussion board that over time produced a bigger consumer base. It’s actually vibrant, full of individuals prepared and in a position to assist. 
  • And contemplating the recognition of GSAP, there aren’t that many points you might come throughout that weren’t already addressed earlier than.
The GSAP official web site contains a showcase stuffed with examples of spectacular GSAP-based animations

You may add GSAP to your undertaking in varied methods – by importing native information, by npm, or through the use of CDN (“ ajax libs gsap”).

GSAP animations weren’t the one different I thought of.

GSAP alternate options

One other resolution I thought of is anime.js. It might need nice potential, however its downside is the shortage of steady help for the library. The software program has not been up to date for nearly 2 years. And whereas it nonetheless works simply high-quality, and there’s no clear indication that the library was deserted, I can’t assist however be cautious of that state of affairs.

Anime.js is a light-weight open-source JavaScript animation library that gives lots of the options supplied by GSAP

When engaged on giant and scalable methods, such because the one I’m tackling on this case examine, you might want to have full confidence in all of the third-party options you employ.

In that regard, GSAP was a transparent winner when in comparison with alternate options comparable to anime.js or Animate css.

Helpful GSAP sources

As I stated, GSAP gives lots of sources that make your introduction to the library smoother. I extremely suggest you attempt these:

The GSAP documentation gives tons of useful data and nice developer expertise due to a variety of interactive examples and clear content material construction

Alright! With that stated, I suppose we will lastly check out the library itself.

How does GSAP work? GSAP tutorial

Earlier than I get again to the undertaking, I’m going to provide you a fast overview of the idea to be able to create animations like this your self.


The tween

While you begin with GSAP, one of many first ideas you find out about is the tween. That is the constructing block of any GSAP-based work.

The tween is one unit of animation. You may provoke it in 3 ways:

  1. – all you establish are the ending CSS values your object is to be animated into.
  2. gsap.fromTo() – you establish each beginning and ending CSS values of your animations.
  3. gsap.from() – you solely decide beginning values (the ending values will likely be inherited from default CSS types).

I sorted the listing above, ranging from people who I really feel are used essentially the most for tweens. 

Let’s check out an instance of a tween based mostly on the perform.

A HTML ingredient is the primary argument of the perform. To do the identical in React, you’ll usually flip to useRef. Along with the ingredient itself, you may also reference an ID or HTML class. That offers you loads of choices to get to parts during which including a ref is tough. A superb instance of such parts may very well be SVGs imported from belongings and used as common React parts.

The second argument used here’s a number of animation properties. The entire listing of properties clearly consists of the entire CSS properties. As well as, GSAP affords lots of customized properties. It additionally consists of callbacks, which function one thing of a bridge between the world of animation and JavaScript. Due to callbacks, animation occasions can set off some secondary results.

One of the attention-grabbing and most used properties is autoAlpha. When set to 0, it combines the consequences of opacity set to 0 and visibility set to hidden.

Timeline animations

Let’s say you wish to develop a extra advanced animation with GSAP. You need to begin by studying extra about timeline animation, which is actually a cluster of tweens. GSAP makes it potential to make use of superior sequencing in a timeline to attain nice management over particular person tweens. Let’s check out an instance of such superior sequencing.

Let’s modify the earlier instance by breaking it into two separate phases. Every stage is a separate tween and the entire piece of code is a timeline.

Not too exhausting, isn’t it?

You might need seen a further argument within the final tween – +=0.5. While you use tweens inside a timeline, you’ll be able to add time modifiers. The one above implies that the animation will execute half a second after the earlier one is accomplished.

Again to the undertaking – a sensible GSAP case examine

That’s it for the essential idea. At this level, you have to be greater than acquainted sufficient with GSAP to dive deeper into my undertaking. To make it a little bit simpler, nonetheless, let’s put apart the difficulty of safety and focus completely on the animations.

However what sort of animation tutorial would it not be with out one thing so that you can click on at? To make it extra attention-grabbing, I ready a reside animation instance in CodeSandbox. I extremely encourage you to play with it a bit.

In an actual undertaking, I take advantage of the GSAP bundle. This time, I’ll use the gsap-trial bundle that’s solely supposed for experimentation. It consists of varied bonus information, a few of which you usually must pay for. I’ll get again to the topic of plugins later. For now, let’s concentrate on the code.

On this simplified instance, the display is blocked once you click on the button.

The mechanism is as follows:

  1. While you click on the button, you set off the animation.
  2. The curtains present up.
  3. Then, the padlock locks.
  4. The keyhole turns crimson.
  5. In an effort to unlock it, you click on the padlock once more.
  6. The animation is triggered once more, however it’s now in reverse.

All the course of takes place contained in the ScreenLocker element.

For starters, you might want to declare your refs after which insert them into correct tags.

Inside my ref, I put not solely my HTML and SVG parts, however the timeline as effectively. Due to that, it gained’t need to be created a number of occasions when the element’s logic will get extra advanced. The timeline is ready to paused by default in order that it doesn’t launch proper after it’s outlined.

Subsequent, I must set the preliminary values of all parts. It’s necessary to do it at the beginning to have just one supply of reality relating to these values. I actually can’t stress sufficient simply how necessary it’s. Oftentimes, certainly one of my teammates would set a CSS worth, would NOT inform anybody about this, after which overlook about the entire thing the subsequent day. After which – the animation misbehaves and no one is aware of why. A single supply of reality (in time and within the flesh) actually does make a distinction.

I must ensure that my refs aren’t null throughout the initialization.

Then, I can set all of the required properties. As you’ll be able to see within the final gsap.set, the values aren’t restricted to strings and numbers. A perform is one other frequent possibility. You need to use it to execute some calculations based mostly on different sources.

As you’ll be able to see, an array of parts can also be allowed. It provides you much more choices. For instance, you’ll be able to set completely different values relying on whether or not the array ingredient is odd and even.

On this instance, the curtain is to maneuver to the left for the primary ingredient (index=0) after which to the correct for the second ingredient (index=1).

Now, I’m going to implement the lock display timeline.

It’s important for the useEffect or useLayoutEffect hooks, during which I outlined the timeline, to execute solely as soon as. In any other case, every subsequent callback execution will trigger the timelines to stack up.

The timeline consists of 5 tweens:

  1. The curtains transfer inwards.
  2. Concurrently (due to the < modifier), the padlock exhibits up.
  3. 0,2 second after the earlier tween concludes, the padlock deal with goes again to the closed place after which bounces again barely, simulating how a padlock usually closes. This rebounding impact is created with the easing.
  4. Lastly, the keyhole turns crimson to point that the display is now locked.

The useEffect hook comprises extra data on the conduct of the timeline: 

In case of issues with React 18 and timelines stacking up within the dev mode, it’s really useful to show off the StrictMode.

And that’s it for the undertaking! As soon as you already know all of the fundamentals, you can be effectively outfitted to make animations comparable to these I confirmed you. And everytime you run into bother, it’s best to check out the docs. It’s very complete and even features a frequent errors part. For those who ever spent any significant time making an attempt to make a JavaScript animation work, you’ll actually respect it.

Prolong GSAP capabilities with plugins

This tutorial wouldn’t be full with no phrase or two about plugins. In any case, whereas I intentionally didn’t use them in my easy instance, they’re a particularly necessary and helpful facet of utilizing GSAP in follow. 

There are two plugins that I discover significantly attention-grabbing:


This appropriately named GSAP plugin makes it potential to set off sure animations and callbacks once you execute corresponding scroll occasions. For instance, once you scroll your manner into a selected space of your app, depart it, or enter it from the highest.


One other sensible plugin is Draggable. And it’s one other one which bought a extremely acceptable title, because it focuses on producing the dragging impact for HTML parts. All it takes is a brief little bit of code:

With this straightforward hook, you may make every HTML ingredient draggable. Right here is how you should utilize it in follow:

The hook returns a ref, which you’ll be able to insert into the ingredient of your HTML file.

That’s the gist of it. After all, you’ll be able to increase this idea by altering how the draggable impact is meant to work. You need to use it:

  • On the X-axis.
  • On the Y-axis.
  • Or by rotating a single ingredient.

Draggable works effectively with the paid Inertia plugin. When mixed collectively, you’ll be able to enrich the dragging impact with spectacular finishes, comparable to having a component glide to a cease in a easy manner. You may take a look at it with gsap-trial.

Classes discovered – why and when to make use of the GSAP library

GSAP has lots of advantages:

  • It’s actually intuitive and simple to make use of.
  • The animations made with GSAP are well-optimized out-of-the-box.
  • The group is massive and actually useful.
  • The docs is an actual standout. 

Nevertheless, that doesn’t imply that GSAP is your best option for each undertaking. 

Use it for apps that require a number of parts, excessive efficiency animations, the necessity for movement paths, and the rest that permits entrance finish builders to attain superior results simply.

I’d not suggest it for apps that solely sport essentially the most fundamental animations. In such tasks, the overhead attributable to together with GSAP won’t be definitely worth the contribution it makes. In any case, a library as strong and highly effective as this one has to weigh a bit. Within the case of GSAP, the load is about 60kB when minified and 25kB when minified and gzipped. And that’s for the essential model with out plugins. It’s considerably akin to the JavaScript utility library Lodash.

Along with that, for easy animations, the quantity of code generated with GSAP is perhaps greater than with pure CSS.

 If all you need is so as to add a few fundamental results, you actually need to investigate if including such a dependency is a good suggestion.

Supply: Reddit

Aside from that, GSAP actually does ship on its guarantees, offering you with spectacular and well-optimized animations to your customized software program undertaking. It’s additionally actually enjoyable to make use of. 

However don’t take me at my phrase – attempt the GSAP sandbox and discover out for your self!


Leave a Reply

    Your Cart
    Your cart is emptyReturn to Shop