CSS rács
Tanulja meg, hogyan engedélyezheti, használhatja és testreszabhatja a CSS Gridre épülő alternatív elrendezési rendszerünket példákkal és kódrészletekkel.
A Bootstrap alapértelmezett rácsrendszere több mint egy évtizedes CSS-elrendezési technikák csúcspontja, amelyet emberek milliói próbáltak ki és teszteltek. De emellett számos modern CSS-funkció és -technika nélkül hozták létre, amelyeket a böngészőkben, például az új CSS-rácsban látunk.
Hogyan működik
A Bootstrap 5-ben hozzáadtuk a CSS Gridre épülő, de Bootstrap csavarral rendelkező külön grid rendszer engedélyezését. Továbbra is kaphat olyan kurzusokat, amelyekre tetszés szerint jelentkezhet reszponzív elrendezések létrehozására, de a motorháztető alatt más megközelítéssel.
-
A CSS Grid feliratkozási lehetőség. Az alapértelmezett rácsrendszer letiltása beállítással
$enable-grid-classes: false
, a CSS Grid engedélyezése pedig a beállítással$enable-cssgrid: true
. Ezután fordítsa újra a Sass-t. -
Cserélje le a példányokat erre
.row
:.grid
. Az.grid
osztály beállítdisplay: grid
és létrehoz egy olyan elemetgrid-template
, amelyre építhetsz a HTML-kóddal. -
Cserélje
.col-*
ki az osztályokat.g-col-*
osztályokkal. Ennek az az oka, hogy CSS Grid oszlopaink agrid-column
tulajdonságot használják a helyettwidth
. -
Az oszlopok és ereszcsatornák méretét CSS-változók állítják be. Állítsa be ezeket a szülőn
.grid
, és tetszés szerint testreszabhatja, soron belül vagy stíluslapon a--bs-columns
és gombokkal--bs-gap
.
A jövőben a Bootstrap valószínűleg hibrid megoldásra fog áttérni, mivel a gap
tulajdon elérte a flexbox szinte teljes böngészőtámogatását.
Főbb különbségek
Az alapértelmezett rácsrendszerhez képest:
-
A Flex segédprogramok nem hatnak ugyanúgy a CSS Grid oszlopaira.
-
A rések helyettesítik az ereszcsatornákat. A tulajdonság az alapértelmezett rácsrendszerünkből
gap
a vízszintes helyébe lép , és inkább a .padding
margin
-
Mint ilyen, az s-től eltérően az
.row
s-.grid
nek nincs negatív margója, és a margó segédprogramok nem használhatók a rács ereszcsatornáinak cseréjére. A rácsrések alapértelmezés szerint vízszintesen és függőlegesen kerülnek alkalmazásra. További részletekért lásd a testreszabási részt . -
A soron belüli és egyéni stílusokat a módosító osztályok helyettesítőjeként kell tekinteni (pl.
style="--bs-columns: 3;"
vsclass="row-cols-3"
). -
A beágyazás hasonlóan működik, de előfordulhat, hogy a beágyazott példányok minden egyes példányánál vissza kell állítania az oszlopok számát
.grid
. A részletekért lásd a beágyazódási részt .
Példák
Három oszlop
.g-col-4
Az osztályok használatával három egyenlő szélességű oszlop hozható létre az összes nézetablakban és eszközön . Adjon hozzá adaptív osztályokat az elrendezés nézetablak mérete szerinti módosításához.
<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>
Fogékony
Használjon adaptív osztályokat az elrendezés módosításához a nézetablakok között. Itt két oszloppal kezdjük a legszűkebb nézetablakban, majd három oszlopra nőünk a közepes és magasabb nézetablakban.
<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>
Hasonlítsa össze ezt a két oszlopos elrendezéssel az összes nézetablakban.
<div class="grid text-center">
<div class="g-col-6">.g-col-6</div>
<div class="g-col-6">.g-col-6</div>
</div>
Csomagolás
A rácselemek automatikusan a következő sorba kerülnek, amikor vízszintesen nincs több hely. Vegye figyelembe, hogy a gap
rácselemek közötti vízszintes és függőleges résekre vonatkozik.
<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>
Indul
A Start osztályok célja az alapértelmezett rácsunk eltolási osztályainak lecserélése, de nem teljesen egyformák. A CSS Grid egy rácssablont hoz létre olyan stílusok segítségével, amelyek azt mondják a böngészőknek, hogy „ebben az oszlopban kezdődik” és „vége ennél az oszlopnál”. Ezek a tulajdonságok grid-column-start
és grid-column-end
. A start osztályok az előbbiek rövidítése. Párosítsa őket az oszloposztályokkal a kívánt méret és igazítás érdekében. 1
Az osztályok kezdési időpontja 0
érvénytelen érték ezeknél a tulajdonságoknál.
<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>
Automatikus oszlopok
Ha nincsenek osztályok a rácselemeken (a közvetlen gyermekei .grid
), minden rácselem automatikusan egy oszlopra méreteződik.
<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>
Ez a viselkedés keverhető rácsoszlop osztályokkal.
<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>
Fészekrakás
Az alapértelmezett grid rendszerünkhöz hasonlóan a CSS Grid lehetővé teszi az .grid
s egyszerű egymásba ágyazását. Az alapértelmezetttől eltérően azonban ez a rács örökli a sorok, oszlopok és hézagok változásait. Tekintsük az alábbi példát:
- Az oszlopok alapértelmezett számát felülírjuk egy helyi CSS-változóval:
--bs-columns: 3
. - Az első automatikus oszlopban az oszlopok száma öröklődik, és minden oszlop a rendelkezésre álló szélesség egyharmada.
- A második automatikus oszlopban visszaállítottuk a beágyazott oszlopok számát
.grid
12-re (alapértelmezett). - A harmadik automatikus oszlopban nincs beágyazott tartalom.
A gyakorlatban ez összetettebb és egyedibb elrendezéseket tesz lehetővé az alapértelmezett rácsrendszerünkhöz képest.
<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>
Testreszabás
Helyi CSS-változókkal testreszabhatja az oszlopok számát, a sorok számát és a rések szélességét.
Változó | Tartalék érték | Leírás |
---|---|---|
--bs-rows |
1 |
A rácssablonban lévő sorok száma |
--bs-columns |
12 |
A rácssablon oszlopainak száma |
--bs-gap |
1.5rem |
Az oszlopok közötti rés mérete (függőleges és vízszintes) |
Ezeknek a CSS-változóknak nincs alapértelmezett értéke; ehelyett tartalék értékeket alkalmaznak, amelyeket addig használnak, amíg egy helyi példányt nem biztosítanak. Például var(--bs-rows, 1)
a CSS Grid soraihoz használjuk, ami figyelmen kívül hagyja, --bs-rows
mert még sehol nincs beállítva. Ha ez megtörtént, a .grid
példány ezt az értéket fogja használni a tartalék értéke helyett 1
.
Nincsenek rácsosztályok
Az azonnali leszármazott elemei .grid
rácselemek, így a méretük anélkül történik, hogy kifejezetten .g-col
osztályt kellene hozzáadni.
<div class="grid text-center" style="--bs-columns: 3;">
<div>Auto-column</div>
<div>Auto-column</div>
<div>Auto-column</div>
</div>
Oszlopok és rések
Állítsa be az oszlopok számát és a hézagot.
<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>
Sorok hozzáadása
További sorok hozzáadása és az oszlopok elhelyezésének módosítása:
<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>
Hézagok
A függőleges hézagokat csak a row-gap
. Vegye figyelembe, hogy gap
az .grid
s-en használjuk, de a row-gap
és column-gap
szükség szerint módosítható.
<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>
Emiatt különböző függőleges és vízszintes gap
s-ek lehetnek, amelyek egy értéket vehetnek fel (minden oldalon), vagy egy értékpárt (függőleges és vízszintes). Ezt a beépített stílussal gap
vagy a --bs-gap
CSS-változónkkal lehet alkalmazni.
<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
A CSS Grid egyik korlátja, hogy alapértelmezett osztályainkat továbbra is két Sass-változó $grid-columns
és $grid-gutter-width
. Ez hatékonyan előre meghatározza az összeállított CSS-ben generált osztályok számát. Itt két lehetőséged van:
- Módosítsa ezeket az alapértelmezett Sass-változókat, és fordítsa újra a CSS-t.
- Használjon soron belüli vagy egyéni stílusokat a biztosított osztályok bővítéséhez.
Például növelheti az oszlopok számát és módosíthatja a hézag méretét, majd méretezheti az „oszlopokat” soron belüli stílusok és előre meghatározott CSS-rács oszloposztályok (pl. .g-col-4
) keverékével.
<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>