Le interazioni GSAP di Webflow ti permettono due cose che prima erano davvero scomode: eseguire un intero effetto hover-in/hover-out da una sola timeline, e costruire una piccola state machine che cambia il colore di sfondo di una sezione con nient’altro che gli event settings. Questa lezione riprende gli event settings della precedente — aggiungendo jump to e delay — e li mette al lavoro su due interazioni reali.
La prima è l’interazione più universale che ci sia: l’hover su un pulsante. La seconda sembra complessa ma si regge su un’idea pulita — una timeline in cui non riproduci attraverso gli stati, ma salti tra di essi. Entrambe mostrano quanto lontano vadano questi settaggi una volta combinati con intenzione.
Come funziona
Play e reverse su una sola timeline. Con le interazioni classiche un hover richiede due animazioni — una per l’hover-in, una per l’hover-out — il che raddoppia la superficie per i bug. Con GSAP costruisci una sola animazione e usi control: play sul mouse-enter e reverse sul mouse-leave. La cosa importante è che entrambi agiscono dalla posizione corrente del playhead. Se qualcuno esce prima che l’animazione in avanti finisca, si ferma lì e inverte proprio da quel frame; rientra e continua di nuovo in avanti. Il movimento è sempre continuo, mai uno scatto.
L’animazione in sé è una lezione di scomposizione. Un hover che sembra sofisticato — scale con rimbalzo elastico, sfondo che si scurisce, una freccia che scivola su-e-fuori dal suo cerchio e poi rientra da sotto — in realtà è solo quattro action semplici cronometrate per convergere. L’unica sottile è il ritorno della freccia: usa una action from to in cui i valori “from” sono l’offset di uscita con i segni invertiti (esce a x:20, y:-20, rientra da x:-20, y:20). Quell’inversione è ciò che la fa tornare dal lato opposto invece di ripercorrere il suo tragitto. L’overflow: hidden del cerchio nasconde la freccia mentre è fuori.
Jump to + pause = una state machine. Il secondo esempio cambia lo sfondo della sezione home-about in base al badge che clicchi. Invece di un’animazione per pulsante, tratta la timeline come un insieme di stati discreti: tre action a durata zero, ciascuna imposta lo sfondo su un colore, posizionate a 0s, 1s e 2s. Ogni badge porta un attributo (element-change-color-role) con il suo valore, e ognuno dei tre eventi click usa jump to (0s / 1s / 2s) con control play per teletrasportare il playhead sul suo stato. Un quarto evento click catch-all colpisce tutti i badge (quell’attributo condiviso) con control pause, congelando la timeline sullo stato appena scelto. La dissolvenza fluida tra i colori non è affatto la timeline — è una transizione CSS background-color di 800ms sulla sezione.
Due dettagli la rendono solida. Control play (non il default “play from beginning”) sui tre eventi evita che la timeline riparta da 0 rompendo la logica a stati. E il pause catch-all porta un minuscolo delay di 0.01s — solo per coprire il caso limite in cui il tuo primissimo click è lo stato a 0s e il playhead è già lì; il micro-delay lascia girare la action dello stato per un frame prima che il pause la congeli.
È volutamente un po’ over-engineered — un esercizio didattico su cosa possono fare gli event settings. In un progetto vero, un’interazione per pulsante (che anima lo sfondo dal colore corrente a quello target) è più semplice; usa la state machine quando l’eleganza di una sola interazione vale la pena.
Come si usa
-
Hover su una sola timeline. Costruisci una interazione sul pulsante con due eventi hover: mouse-enter → control play, mouse-leave → control reverse. Aggiungi l’animazione come action separate (es. scale
1→1.05elastico; sfondo verso una tonalità più scura; frecciamove x/yfuori; freccia from to di rientro con valori “from” a segno invertito). Tieni il wrapper della freccia suoverflow: hidden. -
State machine per il colore. Sulla sezione imposta una transizione CSS:
background-color 800ms ease-out-expo. Dai a ogni badge lo stesso nome di attributo con un valore distinto (purple / blue / orange). Aggiungi tre action a durata zero sulla timeline a 0s / 1s / 2s, ciascuna imposta lo sfondo su un colore. -
Collega gli eventi. Aggiungi un evento click per badge con control play e jump to che corrisponde al tempo della sua action (0s / 1s / 2s). Poi aggiungi un quarto evento click sull’attributo condiviso (tutti i badge) con control pause e un delay di 0.01s. Pubblica e clicca tra i badge — ogni click teletrasporta su uno stato e la transizione CSS ammorbidisce il cambio.