Text Reveal Animations Scalabili in Webflow (Custom Element)

Intermedio 31:00 webflowcustom-elementtext-revealanimationinteractions

Crea text reveal animations riutilizzabili in Webflow con il Custom Element: una sola action, stagger per lettera via CSS inline e supporto multi-riga incluso.

Punti chiave

  • Il Custom Element ti lascia definire il tuo tag semantico (h2, span) direttamente sul canvas — così costruisci nativamente il markup annidato che serve a un text reveal, senza un embed di codice.
  • L''intera animazione si riduce a una action più una condizione iniziale, perché il movimento vero vive in una transition transform sulla classe degli span — non nella timeline.
  • Lo stagger nasce da un attributo style inline (transition-delay) su ogni lettera, non da delay nella timeline — ed è proprio per questo che il setup scala senza mai riaprire l''animazione.
  • Un wrapper di riga con overflow: hidden più uno span wrapper che spingi giù del 100% è ciò che maschera le lettere; l''unica action le riporta su di -100% per rivelarle.
  • Il multi-riga è praticamente gratis: duplichi il wrapper di riga, riutilizzi la stessa animazione e ritocchi solo i delay — e genera molto meno codice del vecchio metodo span-per-lettera.

Capitoli del video

  1. 00:00 Intro
  2. 01:07 Cos''è un Custom Element di Webflow
  3. 01:56 Animazione text reveal: il vecchio metodo
  4. 12:07 Gli svantaggi del vecchio metodo
  5. 13:03 Il nuovo metodo: heading su una riga
  6. 22:01 I vantaggi del nuovo metodo
  7. 23:23 Il nuovo metodo: heading su più righe
  8. 24:35 Il nuovo metodo: pulsante in hover
  9. 30:21 Outro

Puoi costruire una text reveal animation in Webflow che sia riutilizzabile, scalabile e facile da applicare — a un heading su una riga, a uno su più righe o a un pulsante in hover — con una sola action dentro la timeline dell’animazione. Il trucco è smettere di combattere gli elementi nativi di Webflow e usarne uno che forse hai trascurato: il Custom Element.

Parto dal “vecchio metodo”, perché è la versione che quasi tutti costruiscono, e vale la pena vedere esattamente dove si sfalda. Poi ricostruisco lo stesso effetto nel modo nuovo. Cronometrandomi, il vecchio metodo mi ha preso oltre sei minuti per heading; il nuovo meno di quattro — e, cosa più importante, il nuovo scala a heading più lunghi e su più righe con quasi nessun lavoro in più.

Tutta l’idea poggia su un piccolo cambio di prospettiva: lascia che sia una transition CSS ad animare, e lascia che il Custom Element porti il timing per lettera come CSS inline. Quando lo afferri, la timeline di Webflow si riduce a una singola action.

Come funziona

Il vecchio metodo, e perché fa male. Il setup classico maschera un heading (overflow: hidden), lo divide in uno span per lettera, imposta ogni span a display: inline-block così può ricevere una transform, poi costruisce un’interazione scroll-into-view che sposta ogni lettera in alto con un delay regolato a mano. Funziona, ma ogni lettera vuole la sua action, gli heading più lunghi ti costringono a rientrare nella timeline per aggiungerne, e gli heading nativi di Webflow non possono fare reveal su più righe senza un trucco che danneggia l’accessibilità. C’è anche una stranezza di Webflow da conoscere: due action create dallo stesso span vengono collegate allo stesso target, quindi conviene costruire la condizione iniziale dall’ultimo span per tenerle indipendenti.

Il Custom Element. Un Custom Element è un segnaposto che lasci cadere sul canvas (Ctrl/Cmd + E → “custom element”) e a cui poi assegni qualsiasi tag HTML dal pannello impostazioni. Imposta il suo Tag su h2 e è un h2. Imposta il Tag di un altro su span e diventa uno span a cui puoi anche dare un valore Text. Fondamentale: un Custom Element accetta qualsiasi attributo custom — incluso style, che ti lascia iniettare CSS inline. È proprio questa capacità a rendere possibile il nuovo approccio.

Perché l’animazione si riduce a una action. Nel nuovo setup, la classe condivisa degli span porta una transition transform (700ms, ease-out-cubic). Le animazioni di Webflow agiscono sulle proprietà CSS, quindi quando la tua timeline cambia una proprietà che ha già una transition corrispondente, è la transition ad animare — tu specifichi solo il valore finale, non durata o easing. Lo stagger, invece, nasce da un transition-delay impostato singolarmente su ogni span tramite il suo attributo style inline (0, 100, 200… millisecondi). Così la timeline ha bisogno solo di una condizione iniziale (spingere giù lo span wrapper per nascondere le lettere) e di una action (spostare le lettere su di -100%). Tutto il resto è CSS.

Come si usa

  1. Costruisci l’heading con i Custom Element. Aggiungi un Custom Element e imposta il suo Tag su h2. Al suo interno, aggiungi un div block come heading line e dai a quello overflow: hidden (è la maschera). Dentro la riga, aggiungi un altro div come span wrapper. Dentro il wrapper, aggiungi un Custom Element per ogni lettera (e per ogni spazio vuoto), impostando il Tag di ciascuno su span e il suo Text sulla lettera che rappresenta.

  2. Stila gli span una volta sola. Applica un’unica classe base a ogni span con display: inline-block (così le transform si applicano) e una transition transform di 700ms, ease-out-cubic. Niente combo class per lettera stavolta — una classe condivisa basta.

  3. Aggiungi il timing per lettera come CSS inline. Sull’attributo style di ogni span, imposta transition-delay a un valore crescente — 0ms, 100ms, 200ms e così via. Questo è lo stagger, e vive interamente fuori dalla timeline.

  4. Costruisci l’animazione a una action. Seleziona l’heading, aggiungi un’interazione Scroll into view. Condizione iniziale: sposta lo span wrapper giù del 100% (si nasconde sotto la riga overflow: hidden). Poi una action: sposta gli span su di -100%. Nessuna durata, nessun delay, nessun easing sulla action stessa — la transition e i delay inline fanno tutto.

  5. Estendi al multi-riga. Duplica la heading line (wrapper + span) per ogni riga aggiuntiva, e riutilizza la stessa animazione senza toccarla. Ritocca solo i valori di transition-delay — per esempio sfasa le lettere della seconda riga di 50ms perché le due righe entrino a cascata.

  6. Adatta per un reveal in hover su un pulsante. Dai al wrapper di testo del pulsante overflow: hidden e position: relative. Metti dentro due copie del testo; imposta la seconda su position: absolute con un top offset del 100% così parte nascosta sotto. Dividi entrambe in span con delay come sopra, poi aggiungi un’interazione hover con una sola action che sposta gli span su di -100%, e una action hover-out che li riporta a 0%.

Nota: il markup preciso per lettera (il valore Text di ogni span e l’intera sequenza di transition-delay per ciascun heading) si imposta elemento per elemento nel Designer, non si incolla come codice, quindi il modo più rapido per vedere la struttura esatta è clonare il progetto qui sopra e ispezionarlo.

Risorse

Domande frequenti

Cos''è un Custom Element di Webflow?
È un elemento segnaposto che puoi trasformare in qualsiasi tag HTML — h2, span e così via — direttamente sul canvas, e a cui puoi aggiungere attributi custom, incluso un attributo style inline. È il modo per ottenere markup semantico e CSS inline che Webflow non espone tramite i suoi elementi nativi.
Perché il Custom Element è meglio del vecchio metodo con una action per lettera?
Il vecchio metodo colpisce ogni lettera con una sua action nella timeline e una combo class: richiede diversi minuti e si rompe su heading lunghi o su più righe. Il nuovo metodo serve una sola action più una condizione iniziale; lo stagger vive in un transition-delay per lettera, quindi scala senza toccare di nuovo la timeline.
Come scaglio le lettere senza aggiungere delay nella timeline?
Dai allo span di ogni lettera un attributo style con transition-delay a valore crescente (0ms, 100ms, 200ms e così via). Una transition transform sulla classe condivisa degli span esegue il movimento vero, e il delay per span scaglia quando ciascuno parte — nessun delay nella timeline.
Funziona con heading su più righe?
Sì, ed è proprio il bello. Duplichi il wrapper di riga (il div overflow: hidden che contiene lo span wrapper) per ogni riga e riutilizzi la stessa identica animazione. Ritocchi solo i valori di transition-delay — per esempio sfasando la seconda riga di 50ms perché le righe entrino a cascata.
Posso riusare la tecnica per un reveal in hover su un pulsante?
Sì. Usa un wrapper di testo con overflow: hidden e position: relative, due copie sovrapposte del testo (la seconda in position: absolute con un top offset del 100% così resta nascosta sotto), span con il transition-delay, e una sola action in hover che sposta gli span su di -100% — con una action in hover-out che li riporta a 0%.

← Torna al corso