Sometimes, an animation needs more than just smooth movement or a playful bounce.

It needs to stretch, overshoot, and snap back dramatically like a rubber band.

Imagine pulling a slingshot. You stretch it… and then let go. It flies forward a bit too far, then bounces back and forth before it stops.

That’s the feeling elastic easing creates. It simulates the behavior of a spring or rubber band.

When something moves with elastic easing, it overshoots the target dramatically and then snaps back with diminishing oscillations before finally settling. This creates a feeling of tension and release.

Similar to other easing you’ve learned so far, Elastic Easing is also available in three variations:

ease: "elastic.in"      // stretches in, like it’s charging up
ease: "elastic.out"     // stretches past the target, then settles
ease: "elastic.inOut"   // elastic on both ends

Elastic easing:

Graph animation may not be that clear, so go ahead and test elastic easings on a circle.

  • Elastic easing:

But it’s not just that. You can completely customize how dramatic it feels:

ease: "elastic.out(1, 0.3)"

As you can see, elastic accepts two arguments,

  • Amplitude (1) It decides how far it stretches. The higher the value, the bigger the wilder the overshoot.
  • Period (0.3) It decides how fast it oscillates. The smaller the value, the quicker the snapping.

You can always keep experimenting to find the right feel for your animation.