0Pricing
CSS Academy · Lezione

Layout masonry: approcci CSS e JS

Crei griglie masonry in stile Pinterest utilizzando column-count in CSS e strategie di fallback JavaScript.

Layout masonry: approcci CSS e JS è una lezione CSS Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento CSS Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso CSS Academy include 4 lezioni in totale.

Che cos'è il masonry layout?

Il masonry layout dispone gli elementi in colonne, facendo occupare a ciascuno il successivo spazio verticale disponibile, come su Pinterest. Gli elementi hanno la stessa larghezza di colonna, ma altezze variabili. Il risultato è una griglia densa e visivamente dinamica, senza spazi bianchi inutilizzati tra le righe.

Masonry con CSS Grid (sperimentale)

Chrome e Firefox, se eseguiti dietro un flag, supportano grid-template-rows: masonry. Gli elementi vengono disposti in colonne, ma le righe ricevono un'altezza basata sul contenuto, consentendo agli elementi di altezza variabile di disporsi senza spazi vuoti. Questa è la futura soluzione nativa.

  <div class="grid">
    <div>1</div><div>2</div><div>3</div><div>4</div>
  </div>

Approccio con CSS Columns

Le colonne CSS creano un layout simile al masonry: columns: 3; column-gap: 1rem. Gli elementi scorrono automaticamente dall'alto verso il basso all'interno di ogni colonna. Il limite è che gli elementi vengono ordinati colonna per colonna (in cima alla colonna 1, in cima alla colonna 2...) e non riga per riga, con conseguenze sull'ordine di lettura e sull'accessibilità.

Evitare le interruzioni di colonna

Impedisca agli elementi di interrompersi tra due colonne applicando break-inside: avoid a ogni elemento. Senza questa regola, una card alta può essere divisa tra due colonne, tagliando a metà il contenuto. La aggiunga sempre quando utilizza le colonne CSS per contenuti simili a card.

Librerie JavaScript per il masonry

Masonry.js, di David DeSandro, riposiziona gli elementi con posizionamento assoluto calcolando l'altezza delle colonne e inserendo ogni elemento nella colonna più corta. Isotope estende questa funzionalità con ordinamento e filtri. Entrambe richiedono JavaScript per calcolare e applicare le posizioni.

Approccio ibrido CSS Grid + JS

Un approccio leggero consiste nel definire una griglia con colonne fisse e righe da 1px, quindi utilizzare JS per impostare grid-row-end: span N su ogni elemento in base all'altezza del contenuto e all'altezza della riga. Gli elementi mantengono l'allineamento sulle righe della griglia ottenendo al contempo altezze variabili.

ResizeObserver per il ricalcolo

Le posizioni del masonry diventano obsolete quando cambia la dimensione della finestra o quando vengono caricate le immagini. Utilizzi ResizeObserver per rilevare i cambiamenti di dimensione e avviare un ricalcolo. Applichi il debounce ai ricalcoli per evitare calcoli eccessivi durante eventi di ridimensionamento rapidi.

Caricamento delle immagini e stabilità del layout

Le immagini con altezza sconosciuta fanno sì che il masonry venga ricalcolato dopo il caricamento. Fornisca attributi espliciti di larghezza e altezza per tutte le immagini, in modo che il browser riservi lo spazio prima del caricamento. Questo previene gli spostamenti delle posizioni e riduce il numero di passaggi di ricalcolo.

Scorrimento infinito con masonry

L'aggiunta di elementi a un layout masonry richiede di ricalcolare solo le colonne interessate, cioè quelle dei nuovi elementi, non l'intera griglia. Librerie come Masonry.js supportano l'animazione degli elementi aggiunti e un layout incrementale senza ricalcolare completamente la disposizione a ogni nuovo gruppo.

Considerazioni sull'accessibilità

L'ordine visivo del masonry differisce dall'ordine del DOM nei layout con posizionamento tramite JavaScript. Si assicuri che l'ordine di tabulazione segua l'ordine del DOM, cioè la sequenza logica di lettura, e non la posizione visiva. Aggiunga tabindex con attenzione oppure si affidi al normale flusso del DOM per la navigazione da tastiera.

Compromessi del masonry solo CSS

Le colonne CSS sono semplici e non richiedono JS, ma presentano una sequenza di lettura per colonne, non per righe, e non supportano filtri o ordinamento. Il masonry Grid non è ancora supportato in produzione. Il masonry JavaScript è completo, ma aggiunge peso e un ritardo di rendering mentre le posizioni vengono calcolate dopo il caricamento del contenuto.

Verifica delle conoscenze

Quale proprietà CSS impedisce a una card di essere divisa tra due colonne CSS?

Riepilogo

Il masonry layout può essere realizzato con le colonne CSS, semplici ma ordinate per colonna, con l'implementazione sperimentale grid-template-rows: masonry, orientata al futuro, oppure con librerie JavaScript come Masonry.js, complete di ordinamento e filtri. Ogni approccio comporta compromessi tra semplicità, accessibilità e funzionalità.

Domande Frequenti

La lezione «Layout masonry: approcci CSS e JS» è gratuita?

Sì — il testo completo di «Layout masonry: approcci CSS e JS» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso CSS Academy, passa a CoddyKit PRO. Il corso CSS Academy include 4 lezioni in totale.

Cosa imparerò in «Layout masonry: approcci CSS e JS»?

Crei griglie masonry in stile Pinterest utilizzando column-count in CSS e strategie di fallback JavaScript. Eserciti CSS Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare CSS Academy?

Non è richiesta alcuna esperienza precedente. CSS Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.

Quanto tempo richiede la lezione «Layout masonry: approcci CSS e JS»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione CSS Academy?

Sì. Ogni lezione CSS Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Layout con footer e sidebar sticky
  2. Layout Holy Grail con Grid
  3. Layout masonry: approcci CSS e JS
  4. Design intrinseco: dimensionamento basato sul contenuto
← Torna a CSS Academy