Grid-systeem
Gebruik ons krachtige mobile-first flexbox-raster om lay-outs in alle soorten en maten te bouwen dankzij een systeem met twaalf kolommen, vijf standaard responsieve lagen, Sass-variabelen en mixins, en tientallen vooraf gedefinieerde klassen.
Het rastersysteem van Bootstrap gebruikt een reeks containers, rijen en kolommen om inhoud op te delen en uit te lijnen. Het is gebouwd met flexbox en is volledig responsief. Hieronder ziet u een voorbeeld en een diepgaande blik op hoe het raster tot stand komt.
Nieuw of onbekend met flexbox? Lees deze CSS Tricks flexbox-handleiding voor achtergrond, terminologie, richtlijnen en codefragmenten.
<div class="container">
<div class="row">
<div class="col-sm">
One of three columns
</div>
<div class="col-sm">
One of three columns
</div>
<div class="col-sm">
One of three columns
</div>
</div>
</div>
In het bovenstaande voorbeeld worden drie kolommen van gelijke breedte gemaakt op kleine, middelgrote, grote en extra grote apparaten met behulp van onze vooraf gedefinieerde rasterklassen. Die kolommen zijn gecentreerd op de pagina met het bovenliggende .container
.
Het opsplitsen, hier is hoe het werkt:
- Met containers kunt u de inhoud van uw site centreren en horizontaal opvullen. Gebruik
.container
voor een responsieve pixelbreedte of.container-fluid
voorwidth: 100%
alle viewport- en apparaatformaten. - Rijen zijn wrappers voor kolommen. Elke kolom heeft een horizontale
padding
(goot genoemd) om de ruimte ertussen te regelen. Ditpadding
wordt dan tegengegaan op de rijen met negatieve marges. Op deze manier wordt alle inhoud in uw kolommen visueel uitgelijnd aan de linkerkant. - In een rasterlay-out moet inhoud binnen kolommen worden geplaatst en mogen alleen kolommen directe onderliggende rijen zijn.
- Dankzij flexbox worden rasterkolommen zonder een opgegeven
width
automatisch opgemaakt als kolommen met gelijke breedte. Bijvoorbeeld, vier instanties van.col-sm
zullen elk automatisch 25% breed zijn vanaf het kleine breekpunt en hoger. Zie de sectie kolommen voor automatische opmaak voor meer voorbeelden. - Kolomklassen geven het aantal kolommen aan dat u wilt gebruiken van de mogelijke 12 per rij. Dus als u drie kolommen van gelijke breedte wilt, kunt u
.col-4
. - Kolom
width
s zijn ingesteld in percentages, dus ze zijn altijd vloeiend en hebben een grootte ten opzichte van hun bovenliggende element. - Kolommen hebben horizontaal
padding
om de goten tussen afzonderlijke kolommen te maken, maar u kunt demargin
uit rijen enpadding
uit kolommen verwijderen met.no-gutters
op de.row
. - Om het raster responsief te maken, zijn er vijf rasteronderbrekingspunten, één voor elk responsief breekpunt : alle breekpunten (extra klein), klein, medium, groot en extra groot.
- Grid-onderbrekingspunten zijn gebaseerd op mediaquery's met een minimale breedte, wat betekent dat ze van toepassing zijn op dat ene breekpunt en al die daarboven (bijvoorbeeld van
.col-sm-4
toepassing op kleine, middelgrote, grote en extra grote apparaten, maar niet op het eerstexs
breekpunt). - U kunt vooraf gedefinieerde rasterklassen (zoals
.col-4
) of Sass-mixins gebruiken voor meer semantische opmaak.
Wees je bewust van de beperkingen en bugs rond flexbox , zoals het onvermogen om sommige HTML-elementen als flexcontainers te gebruiken .
Terwijl Bootstrap em
s of rem
s gebruikt voor het definiëren van de meeste formaten, px
worden s gebruikt voor rasteronderbrekingspunten en containerbreedten. Dit komt omdat de breedte van de viewport in pixels is en niet verandert met de lettergrootte .
Bekijk hoe aspecten van het Bootstrap-rastersysteem werken op meerdere apparaten met een handige tabel.
Extra klein <576px |
Klein ≥576px |
Gemiddeld ≥768px |
Groot (992px) |
Extra groot (1200px) |
|
---|---|---|---|---|---|
Maximale containerbreedte | Geen (automatisch) | 540px | 720px | 960px | 1140px |
Klasse voorvoegsel | .col- |
.col-sm- |
.col-md- |
.col-lg- |
.col-xl- |
# kolommen | 12 | ||||
breedte van de goot | 30px (15px aan elke kant van een kolom) | ||||
Nestbaar | Ja | ||||
Kolomvolgorde | Ja |
Gebruik breekpuntspecifieke kolomklassen voor eenvoudige kolomgrootte zonder een expliciete genummerde klasse zoals .col-sm-6
.
Hier zijn bijvoorbeeld twee rasterlay-outs die van toepassing zijn op elk apparaat en kijkvenster, van xs
tot xl
. Voeg een willekeurig aantal eenheidsloze klassen toe voor elk breekpunt dat u nodig hebt en elke kolom zal dezelfde breedte hebben.
<div class="container">
<div class="row">
<div class="col">
1 of 2
</div>
<div class="col">
2 of 2
</div>
</div>
<div class="row">
<div class="col">
1 of 3
</div>
<div class="col">
2 of 3
</div>
<div class="col">
3 of 3
</div>
</div>
</div>
Kolommen van gelijke breedte kunnen worden opgedeeld in meerdere regels, maar er was een Safari flexbox-bug waardoor dit niet werkte zonder een expliciete flex-basis
of border
. Er zijn oplossingen voor oudere browserversies, maar deze zouden niet nodig moeten zijn als u up-to-date bent.
<div class="container">
<div class="row">
<div class="col">Column</div>
<div class="col">Column</div>
<div class="w-100"></div>
<div class="col">Column</div>
<div class="col">Column</div>
</div>
</div>
Automatische lay-out voor flexbox-rasterkolommen betekent ook dat u de breedte van één kolom kunt instellen en dat de kolommen van de zusterkolommen er automatisch omheen kunnen worden vergroot. U kunt vooraf gedefinieerde rasterklassen (zoals hieronder weergegeven), rastermixins of inline-breedten gebruiken. Merk op dat de grootte van de andere kolommen zal veranderen, ongeacht de breedte van de middelste kolom.
<div class="container">
<div class="row">
<div class="col">
1 of 3
</div>
<div class="col-6">
2 of 3 (wider)
</div>
<div class="col">
3 of 3
</div>
</div>
<div class="row">
<div class="col">
1 of 3
</div>
<div class="col-5">
2 of 3 (wider)
</div>
<div class="col">
3 of 3
</div>
</div>
</div>
Gebruik col-{breakpoint}-auto
klassen om kolommen te rangschikken op basis van de natuurlijke breedte van hun inhoud.
<div class="container">
<div class="row justify-content-md-center">
<div class="col col-lg-2">
1 of 3
</div>
<div class="col-md-auto">
Variable width content
</div>
<div class="col col-lg-2">
3 of 3
</div>
</div>
<div class="row">
<div class="col">
1 of 3
</div>
<div class="col-md-auto">
Variable width content
</div>
<div class="col col-lg-2">
3 of 3
</div>
</div>
</div>
Maak kolommen van gelijke breedte die meerdere rijen beslaan door een in te voegen .w-100
waar u wilt dat de kolommen op een nieuwe regel eindigen. Maak de pauzes responsief door de te mengen .w-100
met enkele responsieve weergavehulpprogramma's .
<div class="row">
<div class="col">col</div>
<div class="col">col</div>
<div class="w-100"></div>
<div class="col">col</div>
<div class="col">col</div>
</div>
Het raster van Bootstrap bevat vijf niveaus van vooraf gedefinieerde klassen voor het bouwen van complexe responsieve lay-outs. Pas de grootte van uw kolommen aan op extra kleine, kleine, middelgrote, grote of extra grote apparaten, zoals u dat wilt.
Voor rasters die hetzelfde zijn van de kleinste apparaten tot de grootste, gebruikt u de .col
en .col-*
klassen. Geef een genummerde klasse op wanneer u een kolom met een bijzonder formaat nodig hebt; blijf anders gerust bij .col
.
<div class="row">
<div class="col">col</div>
<div class="col">col</div>
<div class="col">col</div>
<div class="col">col</div>
</div>
<div class="row">
<div class="col-8">col-8</div>
<div class="col-4">col-4</div>
</div>
Met behulp van een enkele set .col-sm-*
klassen kunt u een basisrastersysteem maken dat gestapeld begint voordat het horizontaal wordt met bij het kleine breekpunt ( sm
).
<div class="row">
<div class="col-sm-8">col-sm-8</div>
<div class="col-sm-4">col-sm-4</div>
</div>
<div class="row">
<div class="col-sm">col-sm</div>
<div class="col-sm">col-sm</div>
<div class="col-sm">col-sm</div>
</div>
Wilt u niet dat uw kolommen eenvoudig in een aantal rasterlagen worden gestapeld? Gebruik indien nodig een combinatie van verschillende klassen voor elke laag. Zie het onderstaande voorbeeld voor een beter idee van hoe het allemaal werkt.
<!-- Stack the columns on mobile by making one full-width and the other half-width -->
<div class="row">
<div class="col-12 col-md-8">.col-12 .col-md-8</div>
<div class="col-6 col-md-4">.col-6 .col-md-4</div>
</div>
<!-- Columns start at 50% wide on mobile and bump up to 33.3% wide on desktop -->
<div class="row">
<div class="col-6 col-md-4">.col-6 .col-md-4</div>
<div class="col-6 col-md-4">.col-6 .col-md-4</div>
<div class="col-6 col-md-4">.col-6 .col-md-4</div>
</div>
<!-- Columns are always 50% wide, on mobile and desktop -->
<div class="row">
<div class="col-6">.col-6</div>
<div class="col-6">.col-6</div>
</div>
Gebruik flexbox-uitlijnhulpprogramma's om kolommen verticaal en horizontaal uit te lijnen.
<div class="container">
<div class="row align-items-start">
<div class="col">
One of three columns
</div>
<div class="col">
One of three columns
</div>
<div class="col">
One of three columns
</div>
</div>
<div class="row align-items-center">
<div class="col">
One of three columns
</div>
<div class="col">
One of three columns
</div>
<div class="col">
One of three columns
</div>
</div>
<div class="row align-items-end">
<div class="col">
One of three columns
</div>
<div class="col">
One of three columns
</div>
<div class="col">
One of three columns
</div>
</div>
</div>
<div class="container">
<div class="row">
<div class="col align-self-start">
One of three columns
</div>
<div class="col align-self-center">
One of three columns
</div>
<div class="col align-self-end">
One of three columns
</div>
</div>
</div>
<div class="container">
<div class="row justify-content-start">
<div class="col-4">
One of two columns
</div>
<div class="col-4">
One of two columns
</div>
</div>
<div class="row justify-content-center">
<div class="col-4">
One of two columns
</div>
<div class="col-4">
One of two columns
</div>
</div>
<div class="row justify-content-end">
<div class="col-4">
One of two columns
</div>
<div class="col-4">
One of two columns
</div>
</div>
<div class="row justify-content-around">
<div class="col-4">
One of two columns
</div>
<div class="col-4">
One of two columns
</div>
</div>
<div class="row justify-content-between">
<div class="col-4">
One of two columns
</div>
<div class="col-4">
One of two columns
</div>
</div>
</div>
De goten tussen kolommen in onze vooraf gedefinieerde rasterklassen kunnen worden verwijderd met .no-gutters
. Dit verwijdert de negatieve margin
s van .row
en de horizontale padding
van alle directe onderliggende kolommen.
Hier is de broncode voor het maken van deze stijlen. Houd er rekening mee dat kolomoverschrijvingen alleen betrekking hebben op de eerste onderliggende kolommen en worden getarget via attribuutselector . Hoewel dit een meer specifieke selector genereert, kan kolomopvulling nog verder worden aangepast met spatiëringshulpprogramma's .
Een edge-to-edge ontwerp nodig? Laat de ouder vallen .container
of .container-fluid
.
In de praktijk ziet het er zo uit. Merk op dat u dit kunt blijven gebruiken met alle andere vooraf gedefinieerde rasterklassen (inclusief kolombreedten, responsieve lagen, herschikkingen en meer).
<div class="row no-gutters">
<div class="col-12 col-sm-6 col-md-8">.col-12 .col-sm-6 .col-md-8</div>
<div class="col-6 col-md-4">.col-6 .col-md-4</div>
</div>
Als er meer dan 12 kolommen in een enkele rij worden geplaatst, zal elke groep extra kolommen, als één geheel, op een nieuwe regel worden geplaatst.
Aangezien 9 + 4 = 13 > 12, wordt deze 4-koloms brede div als één aaneengesloten eenheid op een nieuwe regel gewikkeld.
Volgende kolommen gaan verder langs de nieuwe regel.
<div class="row">
<div class="col-9">.col-9</div>
<div class="col-4">.col-4<br>Since 9 + 4 = 13 > 12, this 4-column-wide div gets wrapped onto a new line as one contiguous unit.</div>
<div class="col-6">.col-6<br>Subsequent columns continue along the new line.</div>
</div>
Het afbreken van kolommen naar een nieuwe regel in flexbox vereist een kleine hack: voeg een element toe met width: 100%
waar u uw kolommen naar een nieuwe regel wilt wikkelen. Normaal gesproken wordt dit bereikt met meerdere .row
s, maar niet elke implementatiemethode kan hier rekening mee houden.
<div class="row">
<div class="col-6 col-sm-3">.col-6 .col-sm-3</div>
<div class="col-6 col-sm-3">.col-6 .col-sm-3</div>
<!-- Force next columns to break to new line -->
<div class="w-100"></div>
<div class="col-6 col-sm-3">.col-6 .col-sm-3</div>
<div class="col-6 col-sm-3">.col-6 .col-sm-3</div>
</div>
U kunt deze onderbreking ook toepassen op specifieke onderbrekingspunten met onze hulpprogramma's voor responsieve weergave .
<div class="row">
<div class="col-6 col-sm-4">.col-6 .col-sm-4</div>
<div class="col-6 col-sm-4">.col-6 .col-sm-4</div>
<!-- Force next columns to break to new line at md breakpoint and up -->
<div class="w-100 d-none d-md-block"></div>
<div class="col-6 col-sm-4">.col-6 .col-sm-4</div>
<div class="col-6 col-sm-4">.col-6 .col-sm-4</div>
</div>
Gebruik .order-
klassen om de visuele volgorde van uw inhoud te bepalen. Deze klassen zijn responsief, dus u kunt het order
by-breakpoint instellen (bijv. .order-1.order-md-2
). Bevat ondersteuning voor 1
alle 12
vijf rasterlagen.
<div class="container">
<div class="row">
<div class="col">
First, but unordered
</div>
<div class="col order-12">
Second, but last
</div>
<div class="col order-1">
Third, but first
</div>
</div>
</div>
Er zijn ook responsieve klassen .order-first
en .order-last
klassen die het order
element van een element wijzigen door respectievelijk order: -1
en order: 13
( order: $columns + 1
) toe te passen. Deze klassen kunnen indien nodig ook worden vermengd met de genummerde .order-*
klassen.
<div class="container">
<div class="row">
<div class="col order-last">
First, but last
</div>
<div class="col">
Second, but unordered
</div>
<div class="col order-first">
Third, but first
</div>
</div>
</div>
U kunt rasterkolommen op twee manieren verschuiven: onze responsieve .offset-
rasterklassen en onze margehulpprogramma's . De grootte van rasterklassen is afgestemd op kolommen, terwijl marges nuttiger zijn voor snelle lay-outs waarbij de breedte van de offset variabel is.
Verplaats kolommen naar rechts met behulp van .offset-md-*
klassen. Deze klassen vergroten de linkermarge van een kolom met *
kolommen. .offset-md-4
Beweegt bijvoorbeeld .col-md-4
over vier kolommen.
<div class="row">
<div class="col-md-4">.col-md-4</div>
<div class="col-md-4 offset-md-4">.col-md-4 .offset-md-4</div>
</div>
<div class="row">
<div class="col-md-3 offset-md-3">.col-md-3 .offset-md-3</div>
<div class="col-md-3 offset-md-3">.col-md-3 .offset-md-3</div>
</div>
<div class="row">
<div class="col-md-6 offset-md-3">.col-md-6 .offset-md-3</div>
</div>
Naast het wissen van kolommen bij responsieve onderbrekingspunten, moet u mogelijk de offsets opnieuw instellen. Zie dit in actie in het rastervoorbeeld .
<div class="row">
<div class="col-sm-5 col-md-6">.col-sm-5 .col-md-6</div>
<div class="col-sm-5 offset-sm-2 col-md-6 offset-md-0">.col-sm-5 .offset-sm-2 .col-md-6 .offset-md-0</div>
</div>
<div class="row">
<div class="col-sm-6 col-md-5 col-lg-6">.col-sm-6 .col-md-5 .col-lg-6</div>
<div class="col-sm-6 col-md-5 offset-md-2 col-lg-6 offset-lg-0">.col-sm-6 .col-md-5 .offset-md-2 .col-lg-6 .offset-lg-0</div>
</div>
Met de overstap naar flexbox in v4, kunt u margehulpprogramma's gebruiken .mr-auto
om kolommen van broers en zussen van elkaar af te dwingen.
<div class="row">
<div class="col-md-4">.col-md-4</div>
<div class="col-md-4 ml-auto">.col-md-4 .ml-auto</div>
</div>
<div class="row">
<div class="col-md-3 ml-md-auto">.col-md-3 .ml-md-auto</div>
<div class="col-md-3 ml-md-auto">.col-md-3 .ml-md-auto</div>
</div>
<div class="row">
<div class="col-auto mr-auto">.col-auto .mr-auto</div>
<div class="col-auto">.col-auto</div>
</div>
Als u uw inhoud wilt nesten met het standaardraster, voegt u een nieuwe .row
en een reeks .col-sm-*
kolommen toe binnen een bestaande .col-sm-*
kolom. Geneste rijen moeten een set kolommen bevatten die optellen tot 12 of minder (het is niet vereist dat u alle 12 beschikbare kolommen gebruikt).
<div class="row">
<div class="col-sm-9">
Level 1: .col-sm-9
<div class="row">
<div class="col-8 col-sm-6">
Level 2: .col-8 .col-sm-6
</div>
<div class="col-4 col-sm-6">
Level 2: .col-4 .col-sm-6
</div>
</div>
</div>
</div>
Wanneer u de Sass-bronbestanden van Bootstrap gebruikt, hebt u de mogelijkheid om Sass-variabelen en mixins te gebruiken om aangepaste, semantische en responsieve paginalay-outs te maken. Onze vooraf gedefinieerde rasterklassen gebruiken dezelfde variabelen en mixins om een hele reeks kant-en-klare klassen te bieden voor snel reagerende lay-outs.
Variabelen en kaarten bepalen het aantal kolommen, de gootbreedte en het mediaquerypunt waarop zwevende kolommen moeten beginnen. We gebruiken deze om de vooraf gedefinieerde rasterklassen te genereren die hierboven zijn gedocumenteerd, evenals voor de aangepaste mixins die hieronder worden vermeld.
Mixins worden gebruikt in combinatie met de rastervariabelen om semantische CSS voor individuele rasterkolommen te genereren.
U kunt de variabelen wijzigen in uw eigen aangepaste waarden of gewoon de mixins gebruiken met hun standaardwaarden. Hier is een voorbeeld van het gebruik van de standaardinstellingen om een lay-out met twee kolommen te maken met een tussenruimte.
<div class="example-container">
<div class="example-row">
<div class="example-content-main">Main content</div>
<div class="example-content-secondary">Secondary content</div>
</div>
</div>
Met behulp van onze ingebouwde Sass-variabelen en kaarten voor rasters is het mogelijk om de vooraf gedefinieerde rasterklassen volledig aan te passen. Wijzig het aantal lagen, de afmetingen van de mediaquery's en de containerbreedten en compileer vervolgens opnieuw.
Het aantal rasterkolommen kan worden gewijzigd via Sass-variabelen. $grid-columns
wordt gebruikt om de breedtes (in procenten) van elke afzonderlijke kolom te genereren, terwijl breekpuntspecifieke breedtes mogelijk zijn die gelijkmatig over en voor de kolomgoten $grid-gutter-width
worden verdeeld .padding-left
padding-right
Als u verder gaat dan de kolommen zelf, kunt u ook het aantal rasterlagen aanpassen. Als je slechts vier rasterlagen wilt, zou je de $grid-breakpoints
en bijwerken $container-max-widths
naar zoiets als dit:
Wanneer u wijzigingen aanbrengt in de Sass-variabelen of -kaarten, moet u uw wijzigingen opslaan en opnieuw compileren. Als u dit doet, wordt een geheel nieuwe set vooraf gedefinieerde rasterklassen voor kolombreedten, offsets en volgorde weergegeven. Hulpprogramma's voor responsieve zichtbaarheid worden ook bijgewerkt om de aangepaste onderbrekingspunten te gebruiken. Zorg ervoor dat u rasterwaarden instelt in px
(niet rem
, em
, of %
).