I have seen some of the topics here, so this should be relatively simple, but I am new and can't figure it out.
I would like to create an animation of text like this:
https://www.gotolstoy.com/
I have tried to create a component, the html looks like this:
```
<transition-group
class="animation-container"
name="staggered-fade"
:css="false"
appear
v-bind="$attrs"
@before-enter="beforeEnter"
@enter="enter"
>
<h2
class="h1 mb-0"
:class="heading.colour"
v-for="(heading, i) in headings"
:data-index="i"
:key="i"
>
{{ heading.title }}
</h2>
</transition-group>
```
The code behind looks like this:
```
import { defineComponent, ref } from "@vue/composition-api";
import gsap from "gsap";
export default defineComponent({
name: "Business",
setup() {
const duration = ref(0.4);
const headings = ref([
{ title: "discover", colour: "text--pale-blue" },
{ title: "experience", colour: "text--bright-blue" },
{ title: "shop", colour: "text--blue" },
]);
const beforeEnter = (element) => {
element.style.opacity = 0;
element.style.transform = "translateY(50px)";
};
const enter = (element, done) => {
console.log(element.dataset.index);
console.log(element.dataset.skip ?? 0);
console.log(duration.value);
console.log(
(element.dataset.index - (element.dataset.skip ?? 0)) * duration.value
);
console.log("---------------------");
gsap.fromTo(
element,
{
opacity: 0,
y: 0,
duration: duration.value,
delay:
(element.dataset.index - (element.dataset.skip ?? 0)) *
duration.value,
onComplete: done,
},
{
opacity: 1,
y: 100,
duration: duration.value * 2,
delay:
(element.dataset.index - (element.dataset.skip ?? 0)) *
duration.value,
onComplete: done,
repeat: -1,
}
);
};
return { headings, beforeEnter, enter };
},
});
```
The animation I am getting is not doing what I had hoped. Can someone point me in the right direction?
Your help would be greatly appreciated.