Skip to content

text-fade

The fade family splits the element into characters and animates the opacity of each one. text-fade is plain. text-fade-up, -down, -left, -right add a directional offset. text-fade-30 / text-fade-10 start at 30% / 10% opacity instead of 0 — pair them with aa-scrub to dim a paragraph as it enters view.

VariantStarts atOffset
text-fadeopacity 0none
text-fade-upopacity 0translateY from below
text-fade-downopacity 0translateY from above
text-fade-leftopacity 0translateX from the right
text-fade-rightopacity 0translateX from the left
text-fade-30opacity 0.3none — pair with aa-scrub for a dim
text-fade-10opacity 0.1none — pair with aa-scrub for a dim
AttributeDefaultNotes
aa-animate(required)One of the variants above.
aa-splitcharsOverride split mode (chars, words, lines). Add mask flag for line clipping (see descender padding).
aa-stagger0.02Seconds between parts. Falls back to init({ stagger: { chars } }) (default 0.02).
aa-duration(init)Seconds. Falls back to init({ duration }) (default 0.6).
aa-delay0Seconds.
aa-intensity1Multiplier on offset variants. Falls back to init({ intensity }) (default 1).
aa-ease(init)Any GSAP ease. Falls back to init({ ease }) (default power4.out).
aa-scrub(off)true or seconds — bind progress to scroll.

gsap, ScrollTrigger, SplitText (chars fall back to a regex splitter when SplitText is missing).

text-fade

A short hero line

A two-line subhead that wraps onto a second line to show per-line behaviour.

A three-line paragraph of body copy so we can see how the animation reads at a longer scale, with several lines of text wrapping naturally across the page width.

scrubbed (aa-scrub="1")

Tied to scroll.
Watch the easing.
Feel each beat.

text-fade-up

A short hero line

A two-line subhead that wraps onto a second line to show per-line behaviour.

A three-line paragraph of body copy so we can see how the animation reads at a longer scale, with several lines of text wrapping naturally across the page width.

scrubbed (aa-scrub="1")

Tied to scroll.
Watch the easing.
Feel each beat.

text-fade-down

A short hero line

A two-line subhead that wraps onto a second line to show per-line behaviour.

A three-line paragraph of body copy so we can see how the animation reads at a longer scale, with several lines of text wrapping naturally across the page width.

scrubbed (aa-scrub="1")

Tied to scroll.
Watch the easing.
Feel each beat.

text-fade-left

A short hero line

A two-line subhead that wraps onto a second line to show per-line behaviour.

A three-line paragraph of body copy so we can see how the animation reads at a longer scale, with several lines of text wrapping naturally across the page width.

scrubbed (aa-scrub="1")

Tied to scroll.
Watch the easing.
Feel each beat.

text-fade-right

A short hero line

A two-line subhead that wraps onto a second line to show per-line behaviour.

A three-line paragraph of body copy so we can see how the animation reads at a longer scale, with several lines of text wrapping naturally across the page width.

scrubbed (aa-scrub="1")

Tied to scroll.
Watch the easing.
Feel each beat.

text-fade-30

A short hero line

A two-line subhead that wraps onto a second line to show per-line behaviour.

A three-line paragraph of body copy so we can see how the animation reads at a longer scale, with several lines of text wrapping naturally across the page width.

scrubbed (aa-scrub="1")

Tied to scroll.
Watch the easing.
Feel each beat.

text-fade-10

A short hero line

A two-line subhead that wraps onto a second line to show per-line behaviour.

A three-line paragraph of body copy so we can see how the animation reads at a longer scale, with several lines of text wrapping naturally across the page width.

scrubbed (aa-scrub="1")

Tied to scroll.
Watch the easing.
Feel each beat.