Come creare una galleria di immagini con la griglia CSS (Grid)

Come creare una galleria di immagini con la griglia CSS (Grid)

In questo articolo vedremo come creare una galleria di immagini con i CSS in cui le immagini si adattano all'altezza delle righe della griglia.

Per creare la griglia della galleria utilizzeremo la dichiarazione display: grid. Seguendo l'approccio mobile first, creiamo prima le regole per i dispositivi mobile.

.gallery {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
    grid-auto-rows: 200px;
    gap: 1rem;
}

La larghezza delle colonne è dinamica grazie alla parola chiave auto-fill e parte da un minmo di 250 pixel. L'altezza delle righe, definita dalla proprietà grid-auto-rows, è di 200 pixel. Lo spazio tra le colonne è uguale al valore di base in pixel della dimensione del font della pagina.

Ora sovrascriviamo alcune di queste regole per i dispositivi desktop:

@media screen and (min-width: 768px) {
    .gallery {
        grid-auto-rows: 350px;
        grid-template-columns: repeat(auto-fill, minmax(20%, 1fr));
    }    
}

Come si può notare, abbiamo incrementato la larghezza delle colonne e l'altezza delle righe per quegli schermi con risoluzioni maggiori.

A questo punto dobbiamo fare in modo che gli elementi della galleria che contengono le immagini si estendano per l'intera larghezza della colonna e per l'intera altezza della riga.

.gallery .gallery-item {
    width: 100%;
    height: 100%;
}

Per le immagini contenute all'interno degli elementi .gallery-item dobbiamo fare in modo che coprano l'intero elemento contenitore adattandosi in modo proporzionale. A tale scopo possiamo usare la proprietà object-fit.

.gallery .gallery-item img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

Ricordiamo che per operare correttamente, questa proprietà necessita di avere un'immagine che si espanda completamente all'interno dell'elemento che la racchiude.

Conclusione

Grazie al modulo Grid dei CSS e alla proprietà object-fit, è relativamente semplice creare una galleria di immagini il cui layout finale risulta uniformato nonostante la differenza nelle loro dimensioni.