Skip to main content

ExpoScaleEase

Quick Start

CDN Link

gsap.registerPlugin(EasePack) 

Minimal usage

// we're starting at a scale of 1 and animating to 2, so pass those into config()...
gsap.to("#image", { duration: 1, scale: 2, ease: "expoScale(1, 2)" });
Not included in the Core

This ease is in the EasePack file. To learn how to include this in your project, see the Installation page.

Description​

There's an interesting phenomena that occurs when you animate an object's scale that makes it appear to change speed even with a linear ease; ExpoScaleEase compensates for this effect by bending the easing curve accordingly. This is the secret sauce for silky-smooth zooming/scaling animations.

Video Explanation​

Walkthrough

Configuration​

In order for ExpoScaleEase to create the correct easing curve, you must pass in the starting and ending scale values in the string, like:

// we're starting at a scale of 1 and animating to 2, so pass those into config()...
gsap.to("#image", { duration: 1, scale: 2, ease: "expoScale(1, 2)" });

It can also accept a 3rd parameter, the ease that you'd like it to bend (the default is "none"). So, for example, if you'd like to use "power2.inOut", your code would look like:

//scale from 0.5 to 3 using "power2.inOut" ...
gsap.fromTo(
"#image",
{ scale: 0.5 },
{ duration: 1, scale: 3, ease: "expoScale(0.5, 3, power2.inOut)" }
);

Note: The scale values passed into the config() method must be non-zero because the math wouldn't work with 0. You're welcome to use a small value like 0.01 instead. Using a SUPER small number like 0.00000001 may not be ideal because a large portion of the tween would be used going through the very small values.

Simple Demo​

loading...

Complex Demo​

loading...