SQLExcelHTML & CSSBlind typenBlogKies een cursus
Lurndo › Blog › HTML & CSS
  1. Kort antwoord
  2. Hoe centreer je een div horizontaal en verticaal?
  3. Hoe centreer je een div met grid?
  4. Hoe centreer je een div alleen horizontaal met margin auto?
  5. Hoe centreer je verticaal zonder flexbox of grid?
  6. Hoe centreer je met position: absolute?
  7. Waarom centreert text-align: center mijn div niet?
  8. Welke manier kies je wanneer?
  9. Waarom werkt mijn centreren niet?
  10. Hoe leer je centreren voorgoed?
  11. Veelgestelde vragen

Een div of tekst centreren in CSS: zes manieren en wanneer je welke kiest

Horizontaal centreren lukt de meeste mensen wel, verticaal loopt het vaak mis. Hier lees je de zes manieren die vandaag werken, wanneer je welke kiest, en je zet er meteen zelf een paar foodtrucks mee in het midden.

C

Christophe, oprichter van Lurndo
4 november 2026 · 10 min lezen

Een div centreer je in CSS het makkelijkst met flexbox op de ouder: display: flex, justify-content: center en align-items: center. Dan staat het kind in het midden, in de breedte en in de hoogte. Met grid doet place-items: center hetzelfde, margin-inline: auto centreert alleen horizontaal, en sinds oktober 2026 is ook align-content: center op een gewoon blok breed beschikbaar in alle grote browsers.

Oefening: meteen in je browser, op echte gegevens

Oefen dit: de les De dwarsas, gratis

Bronnen: 15 bronnen die je kan nagaan

Een brede papieren lijst als een browservenster, met precies in het midden één koraalrood papieren vierkantje dat aan vier dunne touwtjes hangt, en bovenop een kleine waterpas, op zacht perzikkleurig papier.

Hoe centreer je een div horizontaal en verticaal?

Zet de ouder in flexbox en laat hem zijn kinderen in het midden zetten: display: flex, justify-content: center en align-items: center. Dat is de kortste weg naar het midden in de breedte én in de hoogte, en het werkt met elke inhoud: één knop, een kaart of een groepje foodtrucks. De regels komen op de ouder, niet op de div die je wil verplaatsen: ze op het kind zetten is de eerste klassieke vergissing.

.ouder {
  display: flex;
  justify-content: center;
  align-items: center;
  min-height: 300px;
}

Hoofdas: de richting waarin flexbox de kinderen zet, standaard van links naar rechts. Daar werkt justify-content.

Dwarsas: de as daar dwars op, van boven naar onder. Daar hoort align-items bij.

Let op die min-height. Een blok is standaard zo hoog als zijn inhoud, en dan valt er in de hoogte niets te centreren: het kind raakt de boven- en de onderkant al. Geef de ouder een height of een min-height, en pas dan zie je het kind naar het midden zakken. Een vergeten hoogte is de bekendste reden waarom "verticaal centreren niet werkt".

Probeer het meteen. Op het hoge plein van foodtruckfestival Wielen & Smullen, de klant van onze module over flexbox, staan drie trucks tegen de linkerkant, uitgerekt over de hele hoogte. Het plein is al 200 pixels hoog, dus ruimte is er genoeg. Na je antwoord probeert de controle je CSS ook op een plein met een truck meer en langere namen, dus met een vaste marge kom je er niet.

Probeer het: zet de trucks in het midden

Zet de trucks met flexbox samen in het midden van het plein, in de breedte en in de hoogte.

1.plein {2  display: flex;3}
1<link rel="stylesheet" href="style.css">2<main>3  <section class="plein hoog">4    <div class="truck friet">Friet</div>5    <div class="truck ijs">IJs</div>6    <div class="truck pizza">Pizza</div>7  </section>8</main>
1body {2  margin: 0;3  font-family: system-ui, sans-serif;4  background: #fff8ec;5  color: #2b2118;6}7header {8  padding: 12px 16px;9  background: #264653;10  color: #ffffff;11}12header h1 {13  margin: 0;14  font-size: 1.5rem;15}16nav a {17  padding: 6px 10px;18  border-radius: 999px;19  color: #ffffff;20  text-decoration: none;21}22main {23  padding: 0 16px 24px;24}25.slogan {26  margin: 16px 0 0;27}28.plein {29  margin: 16px 0;30  padding: 12px;31  border-radius: 18px;32  background-color: #efe6d4;33  background-image: radial-gradient(rgb(110 90 60 / 0.16) 1px, transparent 1.5px);34  background-size: 14px 14px;35  box-shadow: inset 0 0 0 1px rgb(110 90 60 / 0.14);36}37.plein.hoog {38  height: 200px;39}40.plein.smal {41  max-width: 250px;42}43/* Een echte truck: cabine, luifel en wielen zijn alleen voor de sier.44   De truck past in het vak, zodat de neus van een truck niet onder45   zijn buurman verdwijnt, en rekt mee met het vak. */46.truck {47  position: relative;48  isolation: isolate;49  margin-bottom: 6px;50  padding: 16px 14px 12px;51  color: #ffffff;52  font-weight: 700;53}54.truck::before {55  content: "";56  position: absolute;57  z-index: -1;58  inset: -3px 0 -1px 0;59  border-style: solid;60  border-width: 32px 20px 12px 12px;61  border-image: url(truck-taco.png) 128 80 48 48 fill round stretch;62  filter: drop-shadow(0 3px 3px rgb(43 33 24 / 0.25));63}64.truck::after {65  content: "";66  position: absolute;67  z-index: -1;68  left: 12px;69  right: 4px;70  bottom: -3px;71  height: 12px;72  background: url(wiel.png) left / 12px no-repeat, url(wiel.png) right / 12px no-repeat;73}74.friet {75  color: #3a2a00;76}77.friet::before {78  border-image-source: url(truck-friet.png);79}80.taco::before {81  border-image-source: url(truck-taco.png);82}83.pizza::before {84  border-image-source: url(truck-pizza.png);85}86.wafel::before {87  border-image-source: url(truck-wafel.png);88}89.ijs {90  padding-top: 30px;91  padding-bottom: 26px;92  color: #4a1030;93}94.ijs::before {95  border-image-source: url(truck-ijs.png);96}97.curry {98  color: #3a1f00;99}100.curry::before {101  border-image-source: url(truck-curry.png);102}103.burger::before {104  border-image-source: url(truck-burger.png);105}106.soep::before {107  border-image-source: url(truck-soep.png);108}109.kaart {110  padding: 4px 16px;111  border-radius: 12px;112  background: #ffffff;113  box-shadow: 0 1px 2px rgb(43 33 24 / 0.08);114}115.kaart h2 {116  font-size: 1.15rem;117}118footer {119  padding: 12px 16px;120  background: #264653;121  color: #ffffff;122}
foodtruck.example

De pagina die je net aanpaste, draaide in je eigen browser. Lurndo controleert ze op wat de browser ervan maakt: waar elke truck terechtkomt, ook op dat verborgen plein met vier trucks. Je hoeft onze oplossing dus niet letterlijk over te nemen. Wil je de twee assen eerst rustig zien, met een inspector die ze voor je tekent, begin dan bij display: flex en daarna justify-content.

Hoe centreer je een div met grid?

Met grid kan het nog korter: display: grid en place-items: center op de ouder. place-items is de afkorting van align-items en justify-items samen, en zet elk kind in het midden van zijn eigen cel. Voor één kind, zoals een melding in een leeg vlak of een logo op een tegel, is dat de kortste regel die er bestaat. place-items werkt sinds januari 2020 in alle grote browsers (MDN).

.ouder {
  display: grid;
  place-items: center;
  min-height: 300px;
}

Cel: het vak waarin een grid-item staat, tussen twee rijlijnen en twee kolomlijnen.

Met meer dan één kind wordt het anders. Een grid zonder kolommen zet zijn kinderen onder elkaar, elk in een eigen rij, en die rijen verdelen de hoogte van de ouder. Elk kind staat dan in het midden van zijn rij, niet samen met de andere in het midden van het vlak. Wil je het groepje bij elkaar, gebruik dan place-content: center of flexbox. In uitlijnen in een cel zie je het verschil op een camping vol tentjes.

Op het web is flexbox de grote favoriet. Volgens Chrome Platform Status gebruikte 84,4% van de geladen pagina's in Chrome op 3 november 2026 flexbox (Chrome Platform Status), tegen 46,5% voor grid (Chrome Platform Status). Grid groeit wel snel: de Web Almanac vond het in 2019 op 2% van de mobiele pagina's en in 2022 al op 12% (Web Almanac).

Pagina's in Chrome die flexbox of grid gebruiken
  1. Flexbox84,4%
  2. Grid46,5%

Bron: Chrome Platform Status, 3 november 2026

Bron: een aandeel van alle paginaladingen in Chrome, niet van alle websites. Het zegt ook niet waarvoor een pagina flexbox of grid gebruikt.

Hoe centreer je een div alleen horizontaal met margin auto?

Voor een blok dat alleen in de breedte in het midden moet, zoals de hoofdinhoud van een pagina, heb je geen flexbox nodig. Geef het een width of een max-width en zet de marge links en rechts op auto: de browser verdeelt de ruimte die overblijft eerlijk over beide kanten. margin: 0 auto is de klassieke schrijfwijze. margin-inline: auto is de moderne, en werkt sinds april 2021 in alle grote browsers (MDN).

main {
  max-width: 48rem;
  margin-inline: auto;
}

margin-inline: de marge aan het begin en het einde van een regel. In het Nederlands is dat links en rechts.

Tip: in een flexcontainer centreert margin: auto op het kind wél in beide richtingen. De automatische marges nemen alle vrije ruimte in.

Werkt margin: 0 auto niet? Dan heeft het blok bijna altijd geen breedte. Zonder width of max-width is een blok zo breed als zijn ouder, en valt er links en rechts niets te verdelen: auto wordt nul. In de hoogte doet auto in een gewoon blok niets, en daarom centreert deze manier alleen horizontaal. In de les centreren met margin auto zie je in het boxmodel hoe de marges meeschuiven.

Hoe centreer je verticaal zonder flexbox of grid?

Met align-content: center, de nieuwste van de zes manieren. Het werkt nu ook op een gewoon blok, met display: block, en de inhoud zakt dan naar het midden van de hoogte. Chrome en Edge 123, Safari 17.4 en Firefox 125 voerden het in het voorjaar van 2024 in, en sinds 16 oktober 2026 is het Baseline widely available (webstatus.dev). Dat label krijgt een functie 30 maanden nadat de laatste grote browser volgde (web.dev).

.melding {
  min-height: 200px;
  align-content: center;
  text-align: center;
}

Nieuw: breed beschikbaar sinds oktober 2026. Moet je veel oudere browsers bedienen, kies dan flexbox.

Baseline: het label op MDN en web.dev voor wat in Chrome, Edge, Firefox en Safari werkt. Widely available wil zeggen: al minstens 30 maanden.

Het voordeel: je verandert niets aan de HTML, en de kinderen blijven gewone blokken in plaats van flex-items die krimpen of uitrekken. Toen het in april 2024 in alle drie de browserengines zat, schreef Rachel Andrew op web.dev dat verticaal centreren, ooit zo goed als onmogelijk, met flexbox en grid al makkelijker was geworden, en dat het nu ook in gewone blokken kan (web.dev).

Toch kom je het nog weinig tegen. In de uitleg over centreren die we voor dit artikel lazen, in het Nederlands en in het Engels, zegt nog niemand dat het klaar is voor gebruik. Ook het centreerrecept van MDN toont alleen flexbox en grid (MDN). Wie het nu leert, loopt dus een beetje voor.

Wanneer elke manier van centreren overal werkte
  1. maart 2018Flexbox en transform worden Baseline widely available
  2. januari 2020place-items werkt in alle grote browsers
  3. april 2020Grid wordt Baseline widely available
  4. april 2021inset en margin-inline werken in alle grote browsers
  5. april 2024align-content op een gewoon blok werkt in alle drie de browserengines
  6. oktober 2026align-content op een gewoon blok wordt Baseline widely available

Bron: webstatus.dev en MDN

Twee soorten datums: "werkt in alle grote browsers" is de dag waarop de laatste volgde. Widely available komt 30 maanden later.

Hoe centreer je met position: absolute?

Soms moet iets bovenop de rest liggen: een venster over de pagina, een afspeelknop op een foto. Dan haal je het uit de stroom met position: absolute, en zet je de ouder op position: relative, zodat het kind zich naar die ouder richt. Met inset: 0 en margin: auto komt het in het midden, op voorwaarde dat het kind een breedte en een hoogte heeft. inset werkt sinds april 2021 in alle grote browsers (MDN).

.foto {
  position: relative;
}
.afspeelknop {
  position: absolute;
  inset: 0;
  width: 64px;
  height: 64px;
  margin: auto;
}

inset: de afkorting van top, right, bottom en left. Met inset: 0 staan ze alle vier op nul.

Ken je de maten niet, gebruik dan de oudere truc. top: 50% en left: 50% zetten de linkerbovenhoek van het kind in het midden, en transform: translate(-50%, -50%) schuift het terug met de helft van zijn eigen breedte en hoogte. Die transform is al sinds maart 2018 Baseline widely available (webstatus.dev). Hoe een kind zich naar zijn ouder richt, oefen je in relative en absolute.

.venster {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}

Een absoluut element telt niet meer mee voor de hoogte van zijn ouder. Die groeit dus niet als het venster groter wordt, en lange tekst kan eruit lopen of over de rest van de pagina schuiven. Daarom is dit de manier voor wat zweeft, en niet voor de gewone inhoud van een pagina.

Waarom centreert text-align: center mijn div niet?

Omdat text-align het blok zelf niet verplaatst, alleen wat erin staat. MDN zegt het precies: de eigenschap regelt de horizontale uitlijning van "the inline-level content inside a block element" (MDN). Tekst, links, een <img> of een knop met display: inline-block schuiven naar het midden. De div zelf blijft zo breed als zijn ouder en staat waar hij stond.

Inline: inhoud die in een regel staat zoals woorden in een zin: tekst, links en standaard ook afbeeldingen.

Voor tekst is text-align: center dus wel de juiste keuze: een titel, een knop onder een formulier, een rij pictogrammen. Zet het op het blok rond de tekst. Wil je een afbeelding centreren, dan heb je twee wegen: laat ze inline staan en zet text-align: center op de ouder, of maak er een blok van met display: block en margin-inline: auto.

.kop {
  text-align: center;
}
.logo {
  display: block;
  margin-inline: auto;
}

Welke manier kies je wanneer?

Er is geen beste manier, wel een beste manier per geval. De vraag is telkens dezelfde: wil je centreren in één richting of in twee, gaat het om één kind of om een groepje, en mag het element in de gewone stroom van de pagina blijven? Deze tabel zet de zes manieren naast elkaar.

ManierKomt opRichtingKies het voor
Flexboxde ouderbeideeen groepje items, en als je twijfelt
place-items: centerde ouder, als gridbeideéén kind in een vlak
margin-inline: autohet blok zelf, met een breedtehorizontaalde hoofdinhoud van een pagina
align-content: centerde ouder, een gewoon blokverticaaltekst in een vak, zonder flexbox
position: absolutehet kind, met de ouder op relativebeideiets dat over de rest zweeft
text-align: centerhet blok rond de teksthorizontaaltekst, links en afbeeldingen in een regel

Twijfel je, begin dan met flexbox: het werkt voor één kind en voor tien, en de kinderen blijven in de stroom. Grid is handig zodra de ouder toch al een grid is. Hoe je die twee leert lezen, met puzzels die steeds iets moeilijker worden, lees je op flexbox en grid oefenen. Alle eigenschappen staan met een voorbeeld op het HTML- en CSS-spiekbriefje.

Waarom werkt mijn centreren niet?

Bijna altijd door een van deze vijf fouten. Ze zien er onschuldig uit, en CSS geeft nooit een foutmelding: er gebeurt gewoon niets, of het werkt op jouw scherm en niet op dat van een ander. Loop ze één voor één af voor je aan je hele stylesheet begint te twijfelen.

  1. De ouder heeft geen hoogte. Een blok is zo hoog als zijn inhoud. Zonder height of min-height op de ouder valt er verticaal niets te centreren, met welke manier ook.
  2. `text-align` op het blok. Het verplaatst de tekst in het blok, niet het blok zelf. Voor de div kies je een van de andere manieren.
  3. `margin: auto` zonder breedte. Een blok zonder width of max-width vult de hele rij, dus blijft er links en rechts niets over om te verdelen.
  4. `absolute` zonder ouder met een positie. Zonder position: relative op de ouder richt het kind zich naar een verdere voorouder met een positie, of naar de pagina zelf. Dan staat het bijvoorbeeld in het midden van het eerste scherm in plaats van in zijn kader.
  5. Vaste maten die breken met langere tekst. Een margin-left: 300px of top: 85px klopt voor één schermbreedte en één tekst. Met een langere titel of een item meer staat alles scheef. Laat de browser rekenen, met auto of center.

Je bent niet de enige die erover struikelt. In de State of CSS 2025, een enquête met 5.506 deelnemers, noemden mensen in hun open antwoorden over lastige layout vooral grid (272 keer), maar ook hoogte (94 keer), positioneren (63 keer) en uitlijnen (55 keer) (State of CSS).

Bron: open antwoorden, geen vaste keuzes. Wie zo'n enquête invult, volgt CSS van dichtbij: dit is geen doorsnee van alle beginners.

Hoe leer je centreren voorgoed?

Centreren onthoud je niet door zes recepten van buiten te leren, wel door te zien wat elke regel doet. Daarom tekent de inspector in onze lessen de assen van flexbox en de lijnen van grid onder de pagina, en controleren we elke oplossing ook op een variant met langere teksten en een item meer. Ga verder met align-items of display: grid, of lees eerst wat het verschil is tussen HTML en CSS. De eerste drie modules zijn gratis.

Veelgestelde vragen

Hoe centreer je een div in CSS?

Zet op de ouder display: flex, justify-content: center en align-items: center. Het kind staat dan in het midden, in de breedte en in de hoogte. Met grid kan het ook, met display: grid en place-items: center. Geef de ouder wel een hoogte, anders valt er verticaal niets te centreren.

Waarom werkt margin: 0 auto niet?

Bijna altijd omdat het blok geen breedte heeft. Zonder width of max-width is een blok even breed als zijn ouder, en blijft er links en rechts niets over om te verdelen. Of het element staat inline, zoals een <span> of een <img>, en dan wordt auto gewoon nul. Maak er eerst een blok van.

Hoe centreer je tekst verticaal zonder flexbox?

Met align-content: center op het blok rond de tekst, en een hoogte op dat blok. Dat werkt sinds 2024 in Chrome, Edge, Firefox en Safari en is sinds oktober 2026 Baseline widely available. Voor één regel kan ook een line-height die even groot is als de hoogte, maar die truc breekt zodra de tekst over twee regels loopt.

Hoe centreer je een afbeelding?

Een afbeelding staat standaard inline, als een woord in een zin. Zet dus text-align: center op het blok eromheen, of maak de afbeelding een blok met display: block en margin-inline: auto. Moet ze ook in de hoogte in het midden, gebruik dan flexbox of grid op de ouder, en geef die ouder een hoogte.

Is align-content: center al veilig om te gebruiken?

Ja, voor gewone websites. Het werkt in Chrome en Edge 123, Safari 17.4 en Firefox 125, allemaal uit het voorjaar van 2024, en is sinds 16 oktober 2026 Baseline widely available. Moet je ook veel oudere browsers bedienen, bijvoorbeeld op een toestel dat niet meer bijwerkt, kies dan flexbox.

Kies je beter flexbox of grid om te centreren?

Voor een groepje items naast elkaar is flexbox het eenvoudigst. Voor één kind in een vlak, of als de ouder toch al een grid is, is place-items: center korter. Beide werken in alle grote browsers. Wat je ook kiest, de regels horen op de ouder, en die ouder heeft een hoogte nodig.

Oefen dit in de cursus

Elke les legt eerst uit en laat je daarna zelf oefenen, met een echte browser in je browser.

  • De dwarsasFlexbox · Align-items
  • CentrerenHet boxmodel · Centreren met margin auto
  • Items uitlijnen in hun celGrid · Uitlijnen in een cel
  • position, relative en absolutePositioneren en responsief · Relative en absolute
Begin gratis met HTML & CSS

Bronnen

  1. webstatus.dev, align-content in block layout (2026-10-16)
  2. web.dev (Rachel Andrew), align-content in block layout, in all three browser engines (2024-04-17)
  3. web.dev, Baseline
  4. webstatus.dev, Flexbox
  5. webstatus.dev, Grid
  6. webstatus.dev, 2D transforms
  7. MDN, place-items
  8. MDN, margin-inline
  9. MDN, inset
  10. MDN, text-align
  11. MDN, Center an element
  12. Chrome Platform Status, Feature popularity, flexbox (2026-11-03)
  13. Chrome Platform Status, Feature popularity, grid (2026-11-03)
  14. HTTP Archive, Web Almanac 2022, CSS (2022)
  15. State of CSS, State of CSS 2025, Layout (2025)
C

Christophe, oprichter van Lurndo

Christophe bouwt Lurndo vanuit België, met korte, speelse oefeningen voor SQL, Excel, HTML & CSS en blind typen, die meteen tonen wat je antwoord doet. Op deze blog beantwoordt Christophe de vragen die mensen bij het leren tegenkomen, met bronnen die je zelf kan nagaan.

Lees ook

  • HTML en CSS: wat is het verschil en hoe werken ze samen?Elke webpagina heeft twee lagen, wat er staat en hoe het eruitziet. Hier zie je hoe HTML en CSS dat werk verdelen, en je schrijft meteen je eerste regel CSS.HTML & CSS · 4 november 2026 · 10 min lezen
  • Hoe bereken je een gemiddelde in Excel? Ook zonder nullen, met een voorwaarde of gewogenEén functie, en toch komt een gemiddelde vaak verkeerd uit. Je ziet hoe GEMIDDELDE rekent, wat het overslaat en hoe je een gemiddelde zonder nullen, met een voorwaarde of gewogen berekent, op echte bladen.Excel · 5 november 2026 · 11 min lezen

SQL

  • Onderwerpen
  • Alle lessen
  • Spiekbriefje
  • Zandbak

Excel

  • Onderwerpen
  • Alle lessen
  • Spiekbriefje
  • Sneltoetsen

HTML & CSS

  • Onderwerpen
  • Alle lessen
  • Spiekbriefje

Blind typen

  • Onderwerpen
  • Alle lessen
  • Spiekbriefje
  • Typetest

Lurndo

  • Dashboard
  • Ranglijst
  • Premium
  • Account
  • Blog
  • Veelgestelde vragen
  • Contact en support
  • Privacy
English