La griglia CSS è un motore di layout molto potente, ma le righe e le
Le tracce di colonne create su una griglia principale possono essere utilizzate solo per il posizionamento diretto
secondari del container della griglia. Qualsiasi autore ha definito aree della griglia con nome e
linee sono andate perse su qualsiasi altro elemento diverso da una
come figlio diretto. Con subgrid
puoi monitorare dimensioni, modelli e nomi
con griglie nidificate. Questo articolo spiega come funziona.
Prima della griglia secondaria, i contenuti venivano spesso personalizzati manualmente per evitare layout irregolari come questo.
Dopo la griglia secondaria, è possibile allineare i contenuti con dimensioni variabili.
Nozioni di base sulla griglia secondaria
Ecco un caso d'uso semplice che introduce le nozioni di base di CSS subgrid
. R
la griglia è definita con due colonne denominate, la prima è larga 20ch
e la seconda
è "il resto" dello spazio 1fr
. I nomi delle colonne non sono obbligatori, ma
ideale per scopi illustrativi ed educativi.
.grid {
display: grid;
gap: 1rem;
grid-template-columns: [column-1] 20ch [column-2] 1fr;
}
Poi, un elemento secondario di quella griglia occupa queste due colonne, viene impostato come contenitore della griglia
e adotta le colonne di quella principale impostando grid-template-columns
su
subgrid
.
.grid > .subgrid {
grid-column: span 2;
display: grid;
grid-template-columns: subgrid; /* 20ch 1fr */
}
Ecco fatto, le colonne di una griglia principale sono state effettivamente passate a un livello una griglia secondaria. Questa griglia secondaria ora può assegnare elementi secondari a una di queste colonne.
Sfida! Ripeti la stessa demo ma fallo per grid-template-rows
.
Condividere una "macro" a livello di pagina griglia
I designer spesso lavorano con griglie condivise, disegnando linee su un intero design, allineando qualsiasi elemento desiderato. Ora anche gli sviluppatori web possono farlo. Questo valore e molto altro ancora.
L'implementazione del flusso di lavoro della griglia del designer più comune può fornire eccellenti informazioni sulle funzionalità, sui flussi di lavoro e sulle potenzialità di subgrid
.
Questo è uno screenshot acquisito da Chrome DevTools di una macro di layout delle pagine per dispositivi mobili a griglia. Le righe hanno nomi e sono presenti aree chiare per il posizionamento dei componenti.
Il seguente CSS crea questa griglia, con righe e colonne denominate per il dispositivo layout. Ogni riga e colonna ha una dimensione.
.device {
display: grid;
grid-template-rows:
[system-status] 3.5rem
[primary-nav] 3rem
[primary-header] 4rem
[main] auto
[footer] 4rem
[system-gestures] 2rem
;
grid-template-columns: [fullbleed-start] 1rem [main-start] auto [main-end] 1rem [fullbleed-end];
}
Alcuni stili aggiuntivi conferiscono il seguente design.
All'interno di questo elemento padre, sono presenti vari elementi nidificati. Il design richiede una
sotto le righe di intestazione e di navigazione. La colonna più lontana a sinistra e a destra
i nomi delle righe sono fullbleed-start
e fullbleed-end
. Assegna un nome alle linee della griglia in questo modo
consente ai bambini di allinearsi
contemporaneamente al posizionamento
sintetica
di fullbleed
. È molto comodo, come vedrai a breve.
Dopo avere creato il layout generale del dispositivo con righe e colonne con nomi utili, utilizza
subgrid
per passare le righe e le colonne con nome corretto ai layout a griglia nidificati. Questo
è quel momento magico di subgrid
. Il layout del dispositivo trasmette le righe denominate
al contenitore di app, che poi le passa a ciascuno dei suoi
bambini.
.device > .app,
.app > * {
display: grid;
grid: subgrid / subgrid;
/* same as */
grid-template-rows: subgrid;
grid-template-columns: subgrid;
}
La griglia secondaria CSS è un valore utilizzato al posto di un elenco di tracce della griglia. Le righe e le risorse
le colonne separate da quelle dell'elemento principale, sono ora le stesse righe e
colonne che offre. In questo modo sono disponibili i nomi delle linee della griglia .device
agli elementi secondari di .app
, anziché solo .app
. Gli elementi all'interno di .app
erano
impossibile fare riferimento alle tracce della griglia create da .device
prima della griglia secondaria.
Con tutto questo definito, l'immagine nidificata è ora in grado di spostarsi al vivo
layout grazie a subgrid
. Non ci sono valori negativi o trucchi, piuttosto un bel
una riga con la scritta "il mio layout va da fullbleed-start
a fullbleed-end
".
.app > main img {
grid-area: fullbleed;
}
Eccola, una griglia di macro implementata in CSS, come quella usata dai designer. Questo può crescere e crescere insieme a te in base alle tue esigenze.
Verifica la presenza di assistenza
Il miglioramento progressivo con CSS e la griglia secondaria è familiare e diretto.
Usa @supports
e chiedi al browser se comprende all'interno della parentesi
come valore per le colonne o le righe del modello. L'esempio seguente controlla se
la proprietà grid-template-columns
supporta la parola chiave subgrid
, che se
true, significa che la griglia secondaria può essere usata
@supports (grid-template-columns: subgrid) {
/* safe to enhance to */
}
Devtools
Chrome, Edge, Firefox e Safari hanno tutti DevTools una griglia CSS efficace, mentre Chrome, Edge e Firefox dispongono di strumenti specifici per supportare la gestione della griglia secondaria. Annuncio di Chrome dei loro strumenti 115 mentre Firefox li utilizza da almeno un anno.
Il badge della griglia secondaria funziona come il badge della griglia, ma distingue visivamente quali sono invece griglie secondarie.
Risorse
Questo elenco è una raccolta di articoli, demo e ispirazioni generali sulle sottogriglie per iniziare. Se stai cercando il passaggio successivo per la tua griglia secondaria istruzione, divertiti a esplorare tutte queste fantastiche risorse.
- MDN
- Rachel Andrew con sottotitoli codificati allineati
- Rachel Andrew con 10 ottimi esempi
- Rachel Andrew con un sito di esempi
- Articolo di Ahmad Shadeed
- Michelle Barker al CSS Day 2022
- Carte
- Chris Coyier con moduli
- Facundo Corradini con allineamento modulo
- Chris Coyier con indicatori di allineamento delle voci dell'elenco
- Michelle Barker esce dal contenitore per allinearsi alla griglia principale
- Miriam Suzanne che mostra i nomi delle linee con nome e le interazioni della griglia secondaria
- Kevin Powell con nozioni di base sulle aree denominate
- Kevin Powell con elenchi allineati
- Shannon Moeller con elenchi allineati
- Kevin Powell con una griglia a livello di pagina trasmessa ai componenti
- Elad Shechter con un overlay devtool e un fallback
- Aaron Iker ha fatto un buon utilizzo tipografico della griglia secondaria per l'allineamento di base della note a piè di pagina
- Andrea Rossi con un'immagine al vivo all'interno di un articolo