Grilă CSS
Aflați cum să activați, să utilizați și să personalizați sistemul nostru de aspect alternativ construit pe CSS Grid cu exemple și fragmente de cod.
Sistemul de grilă implicit al Bootstrap reprezintă punctul culminant a peste un deceniu de tehnici de layout CSS, încercate și testate de milioane de oameni. Dar, a fost creat și fără multe dintre caracteristicile și tehnicile CSS moderne pe care le vedem în browsere, cum ar fi noua Grilă CSS.
Cum functioneaza
Cu Bootstrap 5, am adăugat opțiunea de a activa un sistem de grilă separat, care este construit pe CSS Grid, dar cu o răsucire Bootstrap. Încă primești cursuri pe care le poți aplica la un capriciu pentru a construi machete receptive, dar cu o abordare diferită sub capotă.
-
Grila CSS este opt-in. Dezactivați sistemul de grilă implicit setând
$enable-grid-classes: false
și activați Grila CSS setând$enable-cssgrid: true
. Apoi, recompilați-vă Sass. -
Înlocuiți instanțele
.row
cu.grid
. Clasa.grid
seteazădisplay: grid
și creează un pegrid-template
care îl construiți cu HTML. -
Înlocuiți
.col-*
clasele cu.g-col-*
clase. Acest lucru se datorează faptului că coloanele noastre CSS Grid folosescgrid-column
proprietatea în loc dewidth
. -
Dimensiunile coloanelor și ale jgheaburilor sunt setate prin variabile CSS. Setați-le pe părinte
.grid
și personalizați cum doriți, în linie sau într-o foaie de stil, cu--bs-columns
și--bs-gap
.
În viitor, Bootstrap va trece probabil la o soluție hibridă, deoarece gap
proprietatea a atins compatibilitate aproape completă pentru browser pentru flexbox.
Diferențele cheie
Comparativ cu sistemul de grilă implicit:
-
Utilitarele Flex nu afectează coloanele CSS Grid în același mod.
-
Golurile înlocuiesc jgheaburile. Proprietatea
gap
înlocuiește orizontalulpadding
din sistemul nostru de grilă implicit și funcționează mai mult camargin
. -
Ca atare, spre deosebire
.row
de s,.grid
s nu au marje negative, iar utilitățile de marjă nu pot fi utilizate pentru a schimba jgheaburile rețelei. Decalajele de grilă sunt aplicate implicit orizontal și vertical. Consultați secțiunea de personalizare pentru mai multe detalii. -
Stilurile inline și personalizate ar trebui privite ca înlocuitori pentru clasele modificatoare (de exemplu,
style="--bs-columns: 3;"
vsclass="row-cols-3"
). -
Imbricarea funcționează în mod similar, dar poate fi necesar să resetați contorizarea coloanelor pentru fiecare instanță a unui fișier
.grid
. Consultați secțiunea de imbricare pentru detalii.
Exemple
Trei coloane
.g-col-4
Prin utilizarea claselor pot fi create trei coloane cu lățime egală în toate ferestrele și dispozitivele . Adăugați clase responsive pentru a modifica aspectul după dimensiunea ferestrei de vizualizare.
<div class="grid text-center">
<div class="g-col-4">.g-col-4</div>
<div class="g-col-4">.g-col-4</div>
<div class="g-col-4">.g-col-4</div>
</div>
Receptiv
Folosiți clase de răspuns pentru a vă ajusta aspectul în ferestrele de vizualizare. Aici începem cu două coloane pe cele mai înguste ferestre de vizualizare, apoi creștem la trei coloane pe ferestrele medii și mai sus.
<div class="grid text-center">
<div class="g-col-6 g-col-md-4">.g-col-6 .g-col-md-4</div>
<div class="g-col-6 g-col-md-4">.g-col-6 .g-col-md-4</div>
<div class="g-col-6 g-col-md-4">.g-col-6 .g-col-md-4</div>
</div>
Comparați asta cu acest aspect cu două coloane la toate ferestrele de vizualizare.
<div class="grid text-center">
<div class="g-col-6">.g-col-6</div>
<div class="g-col-6">.g-col-6</div>
</div>
Ambalaj
Elementele grilă se înfășoară automat la următoarea linie atunci când nu mai este spațiu pe orizontală. Rețineți că gap
se aplică spațiilor orizontale și verticale dintre elementele grilei.
<div class="grid text-center">
<div class="g-col-6">.g-col-6</div>
<div class="g-col-6">.g-col-6</div>
<div class="g-col-6">.g-col-6</div>
<div class="g-col-6">.g-col-6</div>
</div>
Începe
Clasele de pornire urmăresc să înlocuiască clasele de compensare ale grilei noastre implicite, dar nu sunt în totalitate la fel. Grila CSS creează un șablon de grilă prin stiluri care spun browserelor să „înceapă de la această coloană” și „se termină la această coloană”. Aceste proprietăți sunt grid-column-start
și grid-column-end
. Orele de început sunt prescurtare pentru primele. Asociați-le cu clasele de coloane pentru a dimensiona și alinia coloanele după cum aveți nevoie. Clasele de început încep la 1
, deoarece 0
este o valoare nevalidă pentru aceste proprietăți.
<div class="grid text-center">
<div class="g-col-3 g-start-2">.g-col-3 .g-start-2</div>
<div class="g-col-4 g-start-6">.g-col-4 .g-start-6</div>
</div>
Coloane automate
Când nu există clase în elementele grilei (fii imediati ai unui .grid
), fiecare element al grilei va fi dimensionat automat la o coloană.
<div class="grid text-center">
<div>1</div>
<div>1</div>
<div>1</div>
<div>1</div>
<div>1</div>
<div>1</div>
<div>1</div>
<div>1</div>
<div>1</div>
<div>1</div>
<div>1</div>
<div>1</div>
</div>
Acest comportament poate fi amestecat cu clasele de coloane grilă.
<div class="grid text-center">
<div class="g-col-6">.g-col-6</div>
<div>1</div>
<div>1</div>
<div>1</div>
<div>1</div>
<div>1</div>
<div>1</div>
</div>
Cuibărire
Similar cu sistemul nostru de grilă implicit, Grila noastră CSS permite imbricarea ușoară a .grid
s. Cu toate acestea, spre deosebire de versiunea implicită, această grilă moștenește modificările în rânduri, coloane și goluri. Luați în considerare exemplul de mai jos:
- Înlocuim numărul implicit de coloane cu o variabilă CSS locală:
--bs-columns: 3
. - În prima coloană automată, numărul coloanelor este moștenit și fiecare coloană este o treime din lățimea disponibilă.
- În a doua coloană automată, am resetat numărul de coloane din imbricat
.grid
la 12 (prestabilit). - A treia coloană automată nu are conținut imbricat.
În practică, acest lucru permite aspecte mai complexe și personalizate în comparație cu sistemul nostru de grilă implicit.
<div class="grid text-center" style="--bs-columns: 3;">
<div>
First auto-column
<div class="grid">
<div>Auto-column</div>
<div>Auto-column</div>
</div>
</div>
<div>
Second auto-column
<div class="grid" style="--bs-columns: 12;">
<div class="g-col-6">6 of 12</div>
<div class="g-col-4">4 of 12</div>
<div class="g-col-2">2 of 12</div>
</div>
</div>
<div>Third auto-column</div>
</div>
Personalizare
Personalizați numărul de coloane, numărul de rânduri și lățimea golurilor cu variabile CSS locale.
Variabil | Valoare de rezervă | Descriere |
---|---|---|
--bs-rows |
1 |
Numărul de rânduri din șablonul de grilă |
--bs-columns |
12 |
Numărul de coloane din șablonul de grilă |
--bs-gap |
1.5rem |
Dimensiunea decalajului dintre coloane (vertical și orizontal) |
Aceste variabile CSS nu au o valoare implicită; în schimb, ei aplică valori de rezervă care sunt utilizate până când este furnizată o instanță locală. De exemplu, folosim var(--bs-rows, 1)
pentru rândurile noastre CSS Grid, care ignoră, --bs-rows
deoarece nu a fost setat încă nicăieri. Odată ce este, .grid
instanța va folosi acea valoare în loc de valoarea de rezervă a 1
.
Fără clase de grilă
Elementele copii imediate ale .grid
sunt elemente de grilă, așa că vor fi dimensionate fără a adăuga în mod explicit o .g-col
clasă.
<div class="grid text-center" style="--bs-columns: 3;">
<div>Auto-column</div>
<div>Auto-column</div>
<div>Auto-column</div>
</div>
Coloane și goluri
Ajustați numărul de coloane și decalajul.
<div class="grid text-center" style="--bs-columns: 4; --bs-gap: 5rem;">
<div class="g-col-2">.g-col-2</div>
<div class="g-col-2">.g-col-2</div>
</div>
<div class="grid text-center" style="--bs-columns: 10; --bs-gap: 1rem;">
<div class="g-col-6">.g-col-6</div>
<div class="g-col-4">.g-col-4</div>
</div>
Adăugarea de rânduri
Adăugarea mai multor rânduri și modificarea plasării coloanelor:
<div class="grid text-center" style="--bs-rows: 3; --bs-columns: 3;">
<div>Auto-column</div>
<div class="g-start-2" style="grid-row: 2">Auto-column</div>
<div class="g-start-3" style="grid-row: 3">Auto-column</div>
</div>
Lacune
Modificați golurile verticale numai prin modificarea row-gap
. Rețineți că folosim gap
pe .grid
s, dar row-gap
și column-gap
poate fi modificat după cum este necesar.
<div class="grid text-center" style="row-gap: 0;">
<div class="g-col-6">.g-col-6</div>
<div class="g-col-6">.g-col-6</div>
<div class="g-col-6">.g-col-6</div>
<div class="g-col-6">.g-col-6</div>
</div>
Din acest motiv, puteți avea diferite s- gap
uri verticale și orizontale, care pot lua o singură valoare (toate laturile) sau o pereche de valori (verticală și orizontală). Acest lucru poate fi aplicat cu un stil inline pentru gap
, sau cu --bs-gap
variabila noastră CSS.
<div class="grid text-center" style="--bs-gap: .25rem 1rem;">
<div class="g-col-6">.g-col-6</div>
<div class="g-col-6">.g-col-6</div>
<div class="g-col-6">.g-col-6</div>
<div class="g-col-6">.g-col-6</div>
</div>
Sass
O limitare a Grilei CSS este că clasele noastre implicite sunt încă generate de două variabile Sass $grid-columns
și $grid-gutter-width
. Acest lucru predetermină efectiv numărul de clase generate în CSS-ul nostru compilat. Aveți două opțiuni aici:
- Modificați acele variabile implicite Sass și recompilați-vă CSS.
- Utilizați stiluri inline sau personalizate pentru a mări clasele furnizate.
De exemplu, puteți crește numărul de coloane și puteți modifica dimensiunea intervalului, apoi puteți mări „coloanele” cu un amestec de stiluri inline și clase de coloane CSS Grid predefinite (de exemplu, .g-col-4
).
<div class="grid text-center" style="--bs-columns: 18; --bs-gap: .5rem;">
<div style="grid-column: span 14;">14 columns</div>
<div class="g-col-4">.g-col-4</div>
</div>