Padroneggia le interazioni GSAP in Webflow per animazioni fluide

Base 41:56 webflowgsapanimazioniinterazionitimeline

Ti aiuto a padroneggiare le interazioni GSAP in Webflow spiegando trigger, action e timeline, così puoi costruire animazioni di page-load fluide e senza intoppi.

Punti chiave

  • La timeline orizzontale rende molto più gestibile il movimento complesso: vedi, modifichi, duplichi e organizzi tutte le action in sequenza in un'unica vista, senza scorrere una pila verticale infinita.
  • Le action di GSAP assorbono lo stato iniziale — la proprietà type ti fa impostare sia il valore di partenza ("from") che quello di arrivo ("to") dentro un'unica action, quindi niente più stato iniziale separato.
  • Il sistema di interazioni classico e il nuovo motore GSAP convivono nello stesso progetto, così sfrutti i punti di forza di entrambi senza che le action si pestino i piedi.
  • I conflitti di timing tra un reveal di page-load e un effetto mouse-move si risolvono in modo pulito: metti il listener del mouse-move su un wrapper absolute dedicato che resta nascosto (display: none) finché l'intro non è finita.
  • Alcune proprietà richiedono ancora un workaround — GSAP non anima ancora blur o le variabili border-radius in modo diretto, quindi fai il toggle di una classe helper con una transizione CSS.

Capitoli del video

  1. 00:00 Intro
  2. 01:37 Cos'è un'interazione? + piano della lezione
  3. 04:14 Cos'è un trigger? (panoramica classica)
  4. 06:43 Convenzioni di nomenclatura per le interazioni
  5. 08:12 Cos'è un'action? + stagger di testo classico
  6. 13:20 Classico: animare l'immagine
  7. 16:42 Struttura della sezione
  8. 18:50 Le interazioni GSAP in Webflow
  9. 21:09 Le action GSAP spiegate
  10. 22:59 Animare l'immagine con GSAP (target, type, proprietà)
  11. 28:45 Animare il testo con GSAP (Split Text + Stagger)
  12. 32:19 Anteprima: eliminare il flicker al page-load
  13. 33:02 Classico + GSAP insieme: effetto mouse-move
  14. 40:14 Outro

Alla fine di questa lezione sarai in grado di costruire un reveal dell’hero fluido e a più livelli con le interazioni GSAP in Webflow. Non si tratta solo di far muovere le cose — colleghiamo quello che succede quando qualcuno arriva sulla pagina a come l’intero layout si compone per accoglierlo. Fatto bene, quel primo momento di movimento cambia del tutto la prima impressione che una persona si fa del tuo lavoro.

Il cambio grosso è la timeline orizzontale. Basta scorrere una pila verticale ingombra di action e stati iniziali separati: vedi e organizzi l’intera sequenza in un colpo d’occhio. E non devi buttare via quello che già sai: le interazioni classiche e il nuovo motore GSAP vivono fianco a fianco, ognuno a fare ciò in cui è più forte.

Vediamo insieme i concetti di base senza gergo complicato e con un unico progetto pratico. Una volta che ti è chiaro il perché dietro trigger, target e action, hai tutto quello che ti serve per creare animazioni di layout che sembrano vive.

Come funziona

Un’interazione è semplicemente un ponte tra quello che fa l’utente e come risponde la pagina. Nel sistema classico costruivi quelle catene dentro una timeline verticale — e una singola sequenza logica spesso andava spezzata su più interazioni separate solo per restare gestibile. Il nuovo sistema GSAP cambia le carte con una timeline orizzontale visiva, dove gestisci, duplichi e organizzi ogni action in sequenza in un’unica sequenza unificata.

E smetti di preoccuparti dello stato iniziale separato. Le action di GSAP lo assorbono con la proprietà type: imposti un’action su to (anima dallo stato del designer a uno nuovo), from (parte da un offset e torna allo stato del designer) oppure from to (definisci entrambi gli estremi in una volta). Effetti come uno scambio di testo in stagger diventano molto più puliti da costruire.

Il motore ha ancora delle lacune, però — al momento non anima variabili CSS personalizzate, blur o border-radius in modo diretto. Il workaround è ibrido: definisci delle classi helper nel tuo style guide che contengono quelle proprietà, dai loro delle normali transizioni CSS, e usi le action GSAP per aggiungerle o rimuoverle. Ottieni un risultato fluido e ben transizionato senza che GSAP tocchi direttamente la proprietà.

Infine, c’è un classico conflitto di timing da risolvere: un reveal di page-load e un effetto mouse-move che cercano di controllare gli stessi elementi nello stesso momento. Se sono attivi entrambi dall’inizio, il cursore del visitatore rovina l’animazione di entrata. Il modello mentale che lo risolve è un elemento “guardiano” — un wrapper nascosto che è l’unico listener del trigger mouse-move, portato da display: none a block dalla timeline di page-load solo alla fine dell’intro. L’effetto del cursore aspetta semplicemente il suo turno.

Come si usa

  1. Imposta la struttura dell’hero.

    • Dai alla sezione hero height: 100vh e position: relative.
    • Al suo interno aggiungi un wrapper immagine con position: absolute, centrato con top: 50% e un translateY(-50%).
    • Dai al wrapper width: 20% e padding-top: 20% così resta un quadrato perfetto a ogni dimensione (il padding in percentuale si calcola sulla larghezza del parent, mantenendo il rapporto 1:1).
    • Metti dentro l’immagine hero, impostala a width: 100dvw e height: 100vh, e max-width: none così Webflow non sovrascrive la larghezza del viewport.
  2. Centra l’immagine con del CSS custom. L’immagine è in absolute e deve restare centrata mentre il wrapper si espande, quindi imposta questi offset nel suo style panel. Così lasci libera la proprietà transform per l’animazione di scala.

    /* Sull'immagine, nello style panel di Webflow */
    top: calc(-1 * (50vh - 50%));
    left: calc(-1 * (50dvw - 50%));
  3. Crea le classi helper. Nello style guide crea un div fittizio e aggiungi due classi di stato finale: cc-animate-image (imposta blur a 0px) e cc-animate-image-wrapper (imposta border-radius a 0px). Dai agli elementi di base delle transizioni CSS corrispondenti su filter e border-radius, così il cambiamento si anima in modo fluido quando GSAP fa il toggle della classe.

  4. Costruisci la timeline GSAP di page-load. Crea una nuova interazione Page Load con GSAP:

    • Action 1 (immagine): type: to, scale: 1.02, e aggiungi cc-animate-image per togliere il blur.
    • Action 2 (wrapper): type: to, width/height a 100%, e aggiungi cc-animate-image-wrapper per squadrare gli angoli.
    • Action 3 e 4 (righe del titolo): attiva Split Text (per parola) con uno stagger “offset time” di 0.1s. La riga uno usa un from di 100% sull’asse Y così le parole salgono in vista; la riga due usa un to di -100% sull’asse Y per uscire di scena.
  5. Collega il trigger mouse-move. Aggiungi un div dentro l’hero (display: none, position: absolute, a tutto schermo) che faccia da listener. Alla fine della timeline di page-load, aggiungi un’action che imposti il suo display a block. Poi crea un’interazione classica mouse-move su quel wrapper, animando le variabili image-left-margin e image-top-margin tra -1% e 1% per muovere l’immagine centrata al movimento del cursore.

Risorse

Nella knowledge base

Pagine di riferimento derivate da questa lezione — lo stesso materiale riorganizzato per concetto, così cerchi una cosa sola senza riguardare il video. In inglese.

  • Split Text — turning one text element into many targets

    Split Text breaks a single text element into words, lines or characters so each piece becomes its own animation target, which is what gives stagger something to spread across; the mask option wraps every piece in its own clipping container so it stays hidden until it moves into view.

  • The interactions model — trigger, target, action, timeline

    A Webflow GSAP interaction is a trigger that fires one or more actions, each applied to a set of targets and laid out on a horizontal timeline; the action's type (to / from / from to) absorbs the initial state, so there is no separate initial-state step the way Classic Interactions had.

  • Reveal a heading word by word or letter by letter on page load

    Enable Split Text on the action so one heading becomes many targets, set the type to from with opacity 0 and move Y 100%, turn the mask on to match the split unit so each piece is clipped, and choose offset time for a fixed rhythm or total time to fit a slot on the timeline.

  • A full-height overlay is cut off or jumps on mobile

    vh is measured against the initial viewport and does not track the mobile browser's UI expanding and collapsing, so a 100vh fixed overlay is taller than the visible area and its bottom is unreachable; use 100dvh, which always matches the real visible height.

  • Verified identifiers

    Every exact attribute name, class name, variable name, SVG id and selector used across the GSAP-in-Webflow corpus, each traced to the cloneable it was copied from; copy these verbatim and never reconstruct one from memory, because a wrong identifier fails silently.

Domande frequenti

Posso usare insieme le interazioni classiche di Webflow e GSAP nello stesso progetto?
Sì — convivono senza problemi nello stesso progetto. Io uso la timeline orizzontale di GSAP per i reveal di page-load complessi e tengo i trigger classici per le cose più semplici, come il cursor tracking del mouse-move.
Come evito che le animazioni al passaggio del mouse partano mentre la pagina si sta ancora caricando?
Metti un div absolute sopra la sezione che faccia da listener, tienilo nascosto con display: none e passalo a block solo dopo che l'animazione di page-load è finita. Così l'effetto hover non può partire troppo presto.
Come si anima il border-radius con il nuovo sistema GSAP di Webflow?
Non anima ancora border-radius né le variabili CSS in modo diretto, quindi usa una classe helper: creane una con il raggio desiderato più una transizione CSS, poi aggiungila o rimuovila con un'action.
Che differenza c'è tra "from", "to" e "from to" nel nuovo pannello interazioni?
Sostituiscono il vecchio passaggio dello stato iniziale separato. "To" anima dallo stato del designer a un nuovo valore, "from" parte da un offset e torna allo stato del designer, e "from to" ti fa impostare tu entrambi gli estremi.