Skip to content

Tween Component

The Tween component composes one GSAP tween from from, to, or effect props.

Basic Tween

html
<script setup>
import { Tween } from 'deja-vue'
</script>

<template>
  <Tween :to="{ x: 56 }">
    <div class="target" />
  </Tween>
</template>

Animation target

Slotted elements are the default target. See Animation targets for is, tween-target, and seamless.

Tween kinds

Use :to, :from, both for fromTo, or effect + effect-options. One kind per Tween. Key the component when switching kind at runtime — see Troubleshooting:

html
<script setup>
import { ref } from 'vue'

import { Tween } from 'deja-vue'

const mode = ref<'to' | 'fromTo'>('to')
</script>

<template>
  <Tween
    :key="mode"
    v-bind="mode === 'fromTo'
      ? { from: { opacity: 0 }, to: { opacity: 1 } }
      : { to: { opacity: 1 } }"
  >
    <div class="target" />
  </Tween>
</template>

Props, events, and slot

Full prop and event reference: Components API — Tween.

Scroll-linked tweens: put scrollTrigger in from / to vars — Animation targets — ScrollTrigger.

Default slot

animation, direction, parent, progress.

html
<script setup>
import { Tween } from 'deja-vue'
</script>

<template>
  <Tween
    :to="{ x: 56 }"
    v-slot="{ progress }"
  >
    <div class="target">
      {{ ~~(progress * 100) }}%
    </div>
  </Tween>
</template>

Events

(animation, parent)start, update, complete, repeat, reverseComplete, interrupt.

Instance access

See Component instance types when you need script-side access. For playback, use Animation controls — Trigger.

Examples

html
<script setup>
import { Tween } from 'deja-vue'
</script>

<template>
  <Tween :from="{ opacity: 0, y: 56, stagger: 0.1 }">
    <div
      v-for="n in 3"
      :key="n"
      class="target"
    />
  </Tween>
</template>