Sistema a griglia
Usa la nostra potente griglia flexbox mobile-first per creare layout di tutte le forme e dimensioni grazie a un sistema a dodici colonne, cinque livelli reattivi predefiniti, variabili Sass e mixin e dozzine di classi predefinite.
Il sistema a griglia di Bootstrap utilizza una serie di contenitori, righe e colonne per il layout e l'allineamento del contenuto. È costruito con flexbox ed è completamente reattivo. Di seguito è riportato un esempio e uno sguardo approfondito su come la griglia si unisce.
Nuovo o non conosci flexbox? Leggi questa guida flexbox CSS Tricks per informazioni su background, terminologia, linee guida e frammenti di codice.
L'esempio precedente crea tre colonne di uguale larghezza su dispositivi piccoli, medi, grandi ed extra large utilizzando le nostre classi di griglia predefinite. Tali colonne sono centrate nella pagina con il genitore .container
.
Scomponendolo, ecco come funziona:
- I contenitori forniscono un mezzo per centrare e riempire orizzontalmente i contenuti del tuo sito. Utilizzare
.container
per una larghezza pixel reattiva o.container-fluid
perwidth: 100%
tutte le dimensioni del viewport e del dispositivo. - Le righe sono wrapper per le colonne. Ogni colonna ha un'orizzontale
padding
(chiamata grondaia) per controllare lo spazio tra di loro. Questopadding
viene poi contrastato sulle righe con margini negativi. In questo modo, tutto il contenuto delle colonne è allineato visivamente sul lato sinistro. - In un layout a griglia, il contenuto deve essere posizionato all'interno di colonne e solo le colonne possono essere figli immediati di righe.
- Grazie a flexbox, le colonne della griglia senza un valore specificato
width
verranno automaticamente posizionate come colonne di uguale larghezza. Ad esempio, quattro istanze di.col-sm
saranno automaticamente larghe il 25% dal punto di interruzione piccolo in su. Vedi la sezione delle colonne con layout automatico per altri esempi. - Le classi di colonne indicano il numero di colonne che desideri utilizzare tra le possibili 12 per riga. Quindi, se vuoi tre colonne di uguale larghezza, puoi usare
.col-4
. - Le colonne
width
sono impostate in percentuale, quindi sono sempre fluide e dimensionate rispetto all'elemento padre. - Le colonne hanno l'orizzontale
padding
per creare le grondaie tra le singole colonne, tuttavia, puoi rimuovere lemargin
righe e lepadding
colonne con.no-gutters
il file.row
. - Per rendere la griglia reattiva, ci sono cinque punti di interruzione della griglia, uno per ogni punto di interruzione reattivo : tutti i punti di interruzione (extra piccolo), piccolo, medio, grande ed extra grande.
- I punti di interruzione della griglia si basano su query multimediali di larghezza minima, il che significa che si applicano a quell'unico punto di interruzione ea tutti quelli al di sopra (ad esempio,
.col-sm-4
si applica a dispositivi piccoli, medi, grandi ed extra grandi, ma non al primo punto dixs
interruzione). - Puoi usare classi di griglia predefinite (come
.col-4
) o mixin Sass per più markup semantico.
Siate consapevoli delle limitazioni e dei bug di flexbox , come l' impossibilità di utilizzare alcuni elementi HTML come contenitori flessibili .
Mentre Bootstrap usa em
s o rem
s per definire la maggior parte delle dimensioni, px
s sono usati per i punti di interruzione della griglia e le larghezze dei contenitori. Questo perché la larghezza della finestra è in pixel e non cambia con la dimensione del carattere .
Scopri come funzionano gli aspetti del sistema di griglia Bootstrap su più dispositivi con una pratica tabella.
Extra piccolo <576px |
Piccolo ≥576px |
Medio ≥768px |
Grande ≥992px |
Extra grande ≥1200px |
|
---|---|---|---|---|---|
Larghezza massima del contenitore | Nessuno (automatico) | 540px | 720px | 960px | 1140px |
Prefisso di classe | .col- |
.col-sm- |
.col-md- |
.col-lg- |
.col-xl- |
# di colonne | 12 | ||||
Larghezza della grondaia | 30px (15px su ciascun lato di una colonna) | ||||
Nidificabile | sì | ||||
Ordinamento delle colonne | sì |
Utilizza classi di colonne specifiche del punto di interruzione per ridimensionare facilmente le colonne senza una classe numerata esplicita come .col-sm-6
.
Ad esempio, ecco due layout di griglia che si applicano a ogni dispositivo e finestra, da xs
a xl
. Aggiungi un numero qualsiasi di classi senza unità per ogni punto di interruzione di cui hai bisogno e ogni colonna avrà la stessa larghezza.
Le colonne di uguale larghezza possono essere suddivise in più righe, ma c'era un bug di Safari flexbox che ne impediva il funzionamento senza un esplicito flex-basis
o border
. Esistono soluzioni alternative per le versioni precedenti del browser, ma non dovrebbero essere necessarie se sei aggiornato.
Il layout automatico per le colonne della griglia flexbox significa anche che puoi impostare la larghezza di una colonna e fare in modo che le colonne di pari livello si ridimensionino automaticamente attorno ad essa. È possibile utilizzare classi di griglia predefinite (come mostrato di seguito), mixin di griglia o larghezze inline. Nota che le altre colonne verranno ridimensionate indipendentemente dalla larghezza della colonna centrale.
Usa col-{breakpoint}-auto
le classi per ridimensionare le colonne in base alla larghezza naturale del loro contenuto.
Crea colonne di uguale larghezza che si estendono su più righe inserendo un .w-100
punto in cui desideri che le colonne si interrompano su una nuova riga. Rendi le pause reattive combinandole .w-100
con alcune utilità di visualizzazione reattive .
La griglia di Bootstrap include cinque livelli di classi predefinite per la creazione di layout reattivi complessi. Personalizza le dimensioni delle tue colonne su dispositivi extra piccoli, piccoli, medi, grandi o extra grandi come meglio credi.
Per le griglie uguali dal dispositivo più piccolo al più grande, utilizzare le classi .col
e . .col-*
Specificare una classe numerata quando si necessita di una colonna di dimensioni particolari; in caso contrario, sentiti libero di attenersi a .col
.
Utilizzando un unico insieme di .col-sm-*
classi, puoi creare un sistema a griglia di base che inizia impilato e diventa orizzontale al piccolo punto di interruzione ( sm
).
Non vuoi che le tue colonne vengano semplicemente impilate in alcuni livelli della griglia? Usa una combinazione di classi diverse per ogni livello, se necessario. Vedi l'esempio qui sotto per un'idea migliore di come funziona.
Utilizzare le utilità di allineamento flexbox per allineare le colonne verticalmente e orizzontalmente.
Le grondaie tra le colonne nelle nostre classi di griglia predefinite possono essere rimosse con .no-gutters
. Questo rimuove le margin
s negative .row
e l'orizzontale padding
da tutte le colonne figlie immediate.
Ecco il codice sorgente per creare questi stili. Si noti che le sostituzioni delle colonne hanno come ambito solo le prime colonne figlie e vengono scelte come target tramite il selettore di attributi . Sebbene ciò generi un selettore più specifico, il riempimento delle colonne può ancora essere ulteriormente personalizzato con le utilità di spaziatura .
Hai bisogno di un design edge-to-edge? Rilascia il genitore .container
o .container-fluid
.
In pratica, ecco come appare. Tieni presente che puoi continuare a usarlo con tutte le altre classi di griglia predefinite (incluse le larghezze delle colonne, i livelli reattivi, i riordini e altro).
Se più di 12 colonne sono posizionate all'interno di una singola riga, ogni gruppo di colonne extra verrà, come un'unica unità, a capo su una nuova riga.
Poiché 9 + 4 = 13 > 12, questo div a 4 colonne viene avvolto su una nuova riga come un'unità contigua.
Le colonne successive continuano lungo la nuova riga.
Rompere le colonne in una nuova riga in flexbox richiede un piccolo trucco: aggiungi un elemento con width: 100%
dove vuoi avvolgere le tue colonne in una nuova riga. Normalmente ciò si ottiene con più .row
s, ma non tutti i metodi di implementazione possono tenerne conto.
Puoi anche applicare questa interruzione a punti di interruzione specifici con le nostre utilità di visualizzazione reattiva .
Usa .order-
le classi per controllare l' ordine visivo dei tuoi contenuti. Queste classi sono reattive, quindi puoi impostare il order
punto di interruzione per (ad esempio, .order-1.order-md-2
). Include il supporto per 1
tutti 12
e cinque i livelli della griglia.
Esistono anche classi reattive .order-first
e che modificano l' elemento di un elemento applicando e ( ), rispettivamente. Queste classi possono anche essere mescolate con le classi numerate secondo necessità..order-last
order
order: -1
order: 13
order: $columns + 1
.order-*
Puoi compensare le colonne della griglia in due modi: le nostre .offset-
classi di griglia reattive e le nostre utilità di margine . Le classi della griglia sono dimensionate per corrispondere alle colonne, mentre i margini sono più utili per layout rapidi in cui la larghezza dell'offset è variabile.
Sposta le colonne a destra usando le .offset-md-*
classi. Queste classi aumentano il margine sinistro di una colonna di *
colonne. Ad esempio, .offset-md-4
si sposta .col-md-4
su quattro colonne.
Oltre alla cancellazione delle colonne nei punti di interruzione reattivi, potrebbe essere necessario reimpostare gli offset. Guardalo in azione nell'esempio della griglia .
Con il passaggio a flexbox nella v4, puoi utilizzare utilità .mr-auto
di margine come forzare le colonne di pari livello l'una dall'altra.
Per annidare i tuoi contenuti con la griglia predefinita, aggiungi un nuovo .row
e un insieme di colonne all'interno di una colonna .col-sm-*
esistente . .col-sm-*
Le righe nidificate devono includere un set di colonne che si sommano fino a 12 o meno (non è necessario utilizzare tutte le 12 colonne disponibili).
Quando si utilizzano i file Sass di origine di Bootstrap, è possibile utilizzare variabili e mixin Sass per creare layout di pagina personalizzati, semantici e reattivi. Le nostre classi di griglia predefinite utilizzano queste stesse variabili e mixin per fornire un'intera suite di classi pronte all'uso per layout veloci e reattivi.
Le variabili e le mappe determinano il numero di colonne, la larghezza della grondaia e il punto di media query in cui iniziare le colonne mobili. Li usiamo per generare le classi di griglia predefinite documentate sopra, così come per i mixin personalizzati elencati di seguito.
I mixin vengono utilizzati insieme alle variabili della griglia per generare CSS semantici per le singole colonne della griglia.
Puoi modificare le variabili in base ai tuoi valori personalizzati o semplicemente utilizzare i mixin con i loro valori predefiniti. Ecco un esempio di utilizzo delle impostazioni predefinite per creare un layout a due colonne con uno spazio vuoto tra.
Utilizzando le nostre variabili e mappe Sass della griglia integrate, è possibile personalizzare completamente le classi di griglia predefinite. Modifica il numero di livelli, le dimensioni della query multimediale e le larghezze del contenitore, quindi ricompila.
Il numero delle colonne della griglia può essere modificato tramite le variabili Sass. $grid-columns
viene utilizzato per generare le larghezze (in percentuale) di ogni singola colonna mentre $grid-gutter-width
imposta la larghezza per le grondaie delle colonne.
Andando oltre le colonne stesse, puoi anche personalizzare il numero di livelli della griglia. Se volessi solo quattro livelli di griglia, aggiorneresti $grid-breakpoints
e $container-max-widths
a qualcosa del genere:
Quando apporti modifiche alle variabili o mappe Sass, dovrai salvare le modifiche e ricompilare. In questo modo verrà prodotto un nuovissimo set di classi di griglia predefinite per larghezze, offset e ordinamento delle colonne. Anche le utilità di visibilità reattive verranno aggiornate per utilizzare i punti di interruzione personalizzati. Assicurati di impostare i valori della griglia in px
(non rem
, em
o %
).