Galleria cubo 3D da CMS allo scroll in Webflow

Avanzato 50:22 webflowgsapcms3dscroll

Costruisci una galleria cubo 3D guidata dallo scroll in Webflow dai dati CMS — immagini in dissolvenza, split text e un cubo che ruota nello spazio con transform 3D e GSAP.

Punti chiave

  • Una sezione alta (es. 500vh) più un container sticky a tutto viewport trasformano la distanza di scroll in tempo di animazione — il container è una "finestra" fissa mentre la pagina scorre dietro.
  • Salva il transform di ogni faccia del cubo nel CMS — origin, move X/Y/Z, rotate X/Y/Z come campi numerici — e legali al transform di ogni item, così una collezione di sei item diventa le sei facce di un cubo.
  • È un'animazione scrubbed: usa scrub on scroll (non trigger actions) così la rotazione del cubo e le transizioni delle immagini seguono direttamente la posizione di scroll.
  • Un vero cubo 3D ha bisogno di perspective sul container e transform-style: preserve-3d sul cubo, così le facce ruotano nello spazio invece di appiattirsi.
  • I campi rotate sono interi e i move decimali per un motivo — la precisione conta nel posizionare le facce in 3D, e piccole differenze si leggono come facce disallineate.

Capitoli del video

  1. 00:00 Intro
  2. 01:06 Anatomia della struttura della collezione CMS
  3. 05:30 Struttura per la transizione immagine & split-text
  4. 13:16 Prima animazione allo scroll: transizione immagine & split-text
  5. 30:07 Costruire il cubo 3D guidato dal CMS
  6. 40:35 Seconda animazione allo scroll: rotazione & movimento del cubo
  7. 47:22 Rifiniture finali & aggiustamenti responsive
  8. 49:17 Outro

È il build più ambizioso della serie: una galleria cubica interamente guidata dal CMS dove le immagini si dissolvono l’una nell’altra mentre un vero cubo 3D ruota e viaggia nello spazio mentre scorri. Sembra qualcosa che Webflow “non può fare” — e si compone da pezzi che già conosci: un’interazione scroll scrubbed, transform guidati dal CMS, split text e un po’ di CSS 3D.

Dato che è impegnativo, questo companion si concentra sul modello mentale — le quattro idee che lo fanno funzionare — invece che su ogni click. Abbinalo al cloneable e all’articolo di Codrops per costruire insieme.

Come funziona

La distanza di scroll diventa tempo di animazione. La sezione è volutamente alta (500vh — un valore arbitrario che imposta la velocità complessiva; più alta = più lenta). Al suo interno, un container a tutto viewport è position: sticky; top: 0, così si ancora e fa da finestra fissa mentre il resto della sezione scorre. Un’interazione scroll GSAP scrubbed mappa quanto hai scrollato nella sezione sul progresso dell’animazione. È scrub-on-scroll, non trigger actions: il cubo ruota e le immagini si dissolvono mentre scorri, avanti o indietro.

Il cubo è costruito dal CMS. La parte ingegnosa è che la posizione di ogni faccia è dato. La collezione pictures ha i campi ovvi (image, un breve text per l’etichetta split-text, un intero order limitato a 6 — perché un cubo ha sei facce) più otto campi numerici “misteriosi”: origin-left, origin-top, move-x/y/z e rotate-x/y/z. Corrispondono esattamente a transform-origin CSS e ai transform move/rotate. Lega il transform di ogni item ai suoi campi (via CSS custom guidato dai dati dell’item) e i sei item della collezione si dispongono in un cubo — ogni faccia ruotata e spinta lungo un asse. Nota i tipi di campo: i rotate sono interi, i move decimali, perché posizionare le facce in 3D richiede quella precisione — piccoli errori si leggono come facce visibilmente disallineate.

Due collection list, due compiti. Una collection list renderizza le immagini di sfondo (impilate una sull’altra, ordinate per order decrescente così l’item 1 sta in cima all’inizio) per la transizione dissolvenza + split-text. Una seconda usa gli stessi dati per costruire le facce del cubo. Separare il lavoro tiene ogni animazione focalizzata.

Il 3D vero ha bisogno di due proprietà CSS. Un “cubo” CSS sembra piatto se la scena non ha profondità: imposta una perspective sul genitore (quanto forte è lo scorcio 3D) e transform-style: preserve-3d sull’elemento cubo, così le sue facce mantengono le loro posizioni 3D individuali invece di essere appiattite sul piano del genitore. Con queste in atto, i transform rotate/move muovono davvero le facce attraverso lo spazio.

Come si usa

  1. CMS. Una collezione pictures con image, un breve text, un intero order (max 6) e otto campi numerici: origin-left, origin-top, move-x, move-y, move-z, rotate-x, rotate-y, rotate-z (rotate interi, move decimali).

  2. Impalcatura per lo scroll. Sezione a 500vh. Dentro, un main-container a 100vh, position: sticky, top: 0, max-width: none — la finestra ancorata. Dentro, un content wrapper a 100%×100%.

  3. Due liste. Una collection list di sfondo (immagini impilate, ordinate per order decrescente) per la transizione immagine + split-text, e una seconda collection list per le facce del cubo. Lega transform-origin e transform move/rotate di ogni item cubo ai suoi campi CMS via CSS custom (dal cloneable). Aggiungi perspective al genitore del cubo e transform-style: preserve-3d al cubo.

  4. Prima animazione — immagine & split text. Un’interazione scroll scrubbed che dissolve le immagini impilate ed esegue uno stagger split-text su ogni text col progredire dello scroll.

  5. Seconda animazione — cubo. Un’interazione scroll scrubbed che anima rotazione e posizione del cubo nella scena, sincronizzata sullo stesso scroll. Chiudi con aggiustamenti responsive per gli schermi più piccoli.

Il CSS custom che lega i campi numerici CMS al transform di ogni item (e i valori esatti delle facce) sta nel cloneable, con una spiegazione scritta completa nell’articolo di Codrops collegato. Costruisci la matematica 3D da quelli invece di ricostruirla a mano.

Risorse

Domande frequenti

Come faccio partire un'animazione allo scroll mentre scorro una sezione Webflow?
Dai alla sezione un'altezza alta (es. 500vh) così c'è distanza di scroll con cui lavorare, e rendi un container interno a tutto viewport position: sticky con top: 0 così resta ancorato come "finestra". Un'interazione scroll GSAP scrubbed mappa poi la posizione di scroll dentro quella sezione sul progresso dell'animazione.
Come posso costruire un cubo 3D da una collezione CMS?
Aggiungi alla collezione campi numerici per il transform di ogni faccia — transform origin, move X/Y/Z, rotate X/Y/Z — e legali al transform di ogni item della collezione via CSS custom. Sei item diventano le sei facce: ciascuna ruotata e spinta lungo un asse per formare il cubo.
Che differenza c'è tra scrub on scroll e trigger actions?
Scrub on scroll lega il playhead dell'animazione direttamente alla posizione di scroll, così scorrere fa scrubbare la timeline avanti e indietro — giusto per un cubo che deve ruotare mentre scorri. Trigger actions invece fa partire un'animazione una volta a una soglia e la lascia andare da sola.
Perché il mio cubo 3D in CSS sembra piatto in Webflow?
Di solito mancano due proprietà: un valore di perspective sul genitore (che dà profondità alla scena) e transform-style: preserve-3d sull'elemento cubo (così i suoi figli mantengono le loro posizioni 3D invece di essere appiattiti sul piano del genitore).

← Torna al corso