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
-
Costruisci l’heading con i Custom Element. Aggiungi un Custom Element e imposta il suo Tag su
h2. Al suo interno, aggiungi undivblock come heading line e dai a quellooverflow: hidden(è la maschera). Dentro la riga, aggiungi un altrodivcome span wrapper. Dentro il wrapper, aggiungi un Custom Element per ogni lettera (e per ogni spazio vuoto), impostando il Tag di ciascuno suspane il suo Text sulla lettera che rappresenta. -
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. -
Aggiungi il timing per lettera come CSS inline. Sull’attributo
styledi ogni span, impostatransition-delaya un valore crescente —0ms,100ms,200mse così via. Questo è lo stagger, e vive interamente fuori dalla timeline. -
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. -
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 di50msperché le due righe entrino a cascata. -
Adatta per un reveal in hover su un pulsante. Dai al wrapper di testo del pulsante
overflow: hiddeneposition: relative. Metti dentro due copie del testo; imposta la seconda suposition: absolutecon untopoffset del100%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 a0%.
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.