Skip to content
Back to skills

Gsap Text

ASecurity

Production recipes for GSAP text animations using SplitText and ScrambleTextPlugin. Companion to official gsap-plugins skill (API reference). Triggers: SplitText, split text, text animation, word animation, scramble text, ScrambleTextPlugin, text reveal, masked text, clip reveal, word stagger, text stagger, character animation, char split, kinetic text, elastic type, text decode, terminal text, cyber text, glitch text, chainTextReveal, useReveal text, GSAP text, Vue text animation, Nuxt text ...

  • 6 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added May 31, 2026
developmentgovuedebuggingapi

Works with

  • terminal
  • cli
  • api

Security analysis

A100/100

Pro scans all 3 files and shows the line behind each finding

Scanned May 31, 2026

npx -y skills add iotron/gsap-cookbook --skill gsap-text --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Gsap Text?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Gsap Text
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/iotron-gsap-text/badge)](https://www.skillsdirectory.com/skills/iotron-gsap-text)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: gsap-text
description: >
  Production recipes for GSAP text animations using SplitText and ScrambleTextPlugin.
  Companion to official gsap-plugins skill (API reference).
  Triggers: SplitText, split text, text animation, word animation, scramble text, ScrambleTextPlugin,
  text reveal, masked text, clip reveal, word stagger, text stagger, character animation, char split,
  kinetic text, elastic type, text decode, terminal text, cyber text, glitch text, chainTextReveal,
  useReveal text, GSAP text, Vue text animation, Nuxt text animation.
  Non-triggers: Not for scroll-driven animation without text (use gsap-scroll), mouse interactions
  (use gsap-interact), SVG animation (use gsap-svg), or general visual effects (use gsap-vfx).
  Outcome: Produces text animations — masked word reveals, scramble decodes, kinetic splits, and
  the useReveal composable API.
---

# GSAP Text — SplitText + ScrambleText

> **Flow**: gsap-setup → gsap-animate → **gsap-text** → gsap-optimise → gsap-test
> **Key files**: `composables/useReveal.js`, `plugins/gsap.js`, `assets/css/tailwind.css`

> **Companion**: For SplitText/ScrambleText API reference, invoke **gsap-plugins**. This skill covers text animation recipes only. Requires: `greensock/gsap-skills`

---

## 1. SplitText Setup

```js
// Preferred — useReveal handles everything:
const { init, hero, scroll, split } = useReveal(sectionRef)
onMounted(() => init(() => scroll()))

// Manual setup:
const { $gsap: gsap, $lazyLoadSplitText, $lazyLoadScramble } = useNuxtApp()
let SplitText, ctx
const splits = []

onMounted(async () => {
  await document.fonts.ready               // CRITICAL: fonts before split
  SplitText = await $lazyLoadSplitText()
  ctx = gsap.context(() => { /* ... */ }, scopeRef.value)
})

onUnmounted(() => {
  splits.forEach(s => s.revert())
  splits.length = 0
  ctx?.revert()
})
```

### Creating a split

```js
const s = SplitText.create(el, { type: 'words', mask: 'words' })
splits.push(s)
gsap.set(s.words, { y: '100%' })
gsap.set(el, { visibility: 'visible' })
```

---

## 2. Masked Word Slide-Up (Production Pattern)

The standard heading reveal used across 25+ components.

```js
ctx = gsap.context(() => {
  const s = SplitText.create(el, { type: 'words', mask: 'words' })
  splits.push(s)
  gsap.set(s.words, { y: '100%' })
  gsap.set(el, { visibility: 'visible' })

  gsap.to(s.words, {
    y: '0%', duration: 0.8, ease: 'power4.out', stagger: 0.06, force3D: true,
    scrollTrigger: {
      trigger: el, start: 'top 85%',
      toggleActions: 'play none none reverse', invalidateOnRefresh: true,
    },
  })
}, scopeRef.value)
```

### Via useReveal (preferred)

```html
<div ref="sectionRef">
  <div class="reveal">
    <h2 class="text-reveal">HEADING TEXT</h2>
  </div>
</div>
```

```js
const { init, scroll } = useReveal(sectionRef)
onMounted(() => init(() => scroll()))
```

---

## 3. ScrambleText Decode

See **gsap-plugins** skill for ScrambleText API reference. Recipe:

```js
gsap.to(el, {
  duration: 0.8 + el.textContent.length * 0.005,
  scrambleText: { text: 'FINAL TEXT', chars: '▓░▒█▀▄╬╠╣▐▌■□', revealDelay: 0.3, speed: 0.4 },
})
```

---

## 4. Gotchas Summary

See `references/learnings.md` for full details and code examples.

- Await `document.fonts.ready` before `SplitText.create()`
- `autoSplit: true` is for **lines** only (responsive reflow) — words/chars don't need it. Always pair with `onSplit()`
- Parent autoAlpha + child mask: use `visibility`, not `autoAlpha`
- Never blank `textContent` before scramble
- Set `overwrite: false` on colocated per-word tweens
- SplitText preserves `<span>` — use `:deep(div)` for gradient styles
- CSS `.reveal` + `.text-reveal` pre-hide classes prevent FOUC

---

## 5. useReveal Composable Reference

| Method | Description |
|--------|-------------|
| `init(fn)` | Async: waits for fonts, lazy-loads SplitText + Scramble, creates gsap.context |
| `hero(selector?, overrides?)` | Immediate reveal for above-fold. Auto-detects `.text-reveal` children |
| `scroll(selector?, overrides?)` | Per-element ScrollTrigger reveal with `.reveal` + `.text-reveal` |
| `split(target)` | SplitText wrapper: creates masked word split, tracks for cleanup |

```js
// Hero (above-fold, immediate)
const { init, hero } = useReveal(sectionRef)
onMounted(() => init(() => hero('.reveal', { textDelay: 0.2 })))

// Scroll (below-fold, per-element ScrollTrigger)
const { init, scroll } = useReveal(sectionRef)
onMounted(() => init(() => scroll('.reveal', { start: 'top 75%', once: true })))
```

Cleanup is automatic — `onUnmounted` reverts gsap.context and all SplitText instances.

---

## References

- `references/text-patterns.md` — Combined clip+scramble, kinetic character split, elastic type assembly, rolling text (3D slot machine), horizontal text (containerAnimation), masked lines reveal, autoSplit with ScrollTrigger
- `references/learnings.md` — 7 critical gotchas from production debugging

Files in this skill

  • SKILL.md4.9 KB
  • references/learnings.md4.7 KB
  • references/text-patterns.md11.9 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.