Powerful GSAP directive for Vue
? Powerful GSAP directive for Vue
Installation
Install the library
pnpm add @zeokku/vue-gsap
Add the plugin to your Vue app:
import gsapPlugin from "./plugin";
createApp(App)
.use(gsapPlugin, {
gsapDefaults: {},
})
.mount("#app");
Usage
Directive argument
There are 3 methods that correspond to the same methods of GSAP:
v-gsap:from– the animation will be played when the element is placed into DOM, so it’s perfect for entering animations. This is the default argument, so you can simply usev-gsapdirective.v-gsap:fromTo– similar tofrom, the animation is played after the element is mounted.v-gsap:to– the animation will be played before the unmount of the component. Good for leaving animations for elements inside of views when used with built-in<Transition>elements.
Directive value
When using from/to the directive expects a GSAPTweenVars object. In case of fromTo it expects a tuple [GSAPTweenVars, GSAPTweenVars], which correspond to from and to.
type TTweenValue = GSAPTweenVars | [GSAPTweenVars, GSAPTweenVars];
You can also fully customize the experience providing in-out object to the directive without its argument to define the animations for entering (in) and leaving (out):
type TInOutValue = {
method?: "to" | "from" | "fromTo";
vars: TTweenValue
};
type TInOut = {
in?: TInOutValue | TTweenValue;
out?: TInOutValue | TTweenValue
};
By default gsap.from is always used for entering and gsap.to for leaving and the directive accepts tween vars right as in and out. But you can provide a more complex object specifying method property to define what should be used in each case.
Modifiers
To improve developer experience, the directive accepts several modifiers to speed up the development.
[digits]– e.g..500, defines the duration of the tween. Should be specified in ms!d...– e.g..d500, defines delay of the tween. Should be specified in ms!s...– e.g..s100, defines stagger of the tween. Should be specified in ms!children– this modifier allows applying the provided tween config to elements children, perfect for animating lists along with usings...modifier.