CSS Flexbox-generator

CSS genereren
Volgende

Flexbox is dé keuze voor eendimensionale layout: rijen kaarten, navigatiebalken, gecentreerde hero’s, formulieren. Het container-en-itemmodel is krachtig, maar de vele properties werken op niet-vanzelfsprekende manieren samen. Deze generator haalt het giswerk uit de container: kies flex-direction, justify-content, align-items, flex-wrap en gap en krijg een nette CSS-regel die je zo in je stylesheet kunt plakken.

Zo genereer je de CSS

  1. 1

    Kies een richting

    Kies row, column of de omgekeerde varianten. Hiermee stel je flex-direction in, de as waarover de items lopen.

  2. 2

    Stel justify-content in

    Kies hoe items zich langs de hoofdas verdelen: begin, centrum, space-between, space-around of einde.

  3. 3

    Stel align-items in

    Kies hoe items zich op de kruis-as uitlijnen: stretch, begin, centrum of einde.

  4. 4

    Stel gap en wrap in

    Voeg ruimte tussen items toe in pixels en bepaal of items naar een nieuwe regel omslaan.

  5. 5

    Kopieer de CSS

    De generator geeft de containerregel met alle properties, klaar om in je stylesheet te plakken.

Container-eigenschappen

Eigenschap Waardes Effect
flex-direction row / column / row-reverse / column-reverse Hoofdas
flex-wrap nowrap / wrap / wrap-reverse Of items wrappen
justify-content flex-start / center / flex-end / space-between / space-around / space-evenly Verdeling op de hoofdas
align-items flex-start / center / flex-end / baseline / stretch Uitlijning per regel op de kruis-as
align-content dezelfde waardes + space-between / space-around Bij wrap: verdeling van regels op de kruis-as
gap (row-gap, column-gap) lengte Tussenruimte tussen items

Item-eigenschappen

Eigenschap Waardes Effect
flex-grow 0+ (zonder eenheid) Aandeel in overgebleven ruimte
flex-shrink 0+ (zonder eenheid) Aandeel in inkrimpen bij overflow
flex-basis lengte of auto Startgrootte vóór grow/shrink
flex shorthand (1 1 auto enz.) Alle drie tegelijk
align-self auto / flex-start / center / flex-end / baseline / stretch Overschrijft align-items voor één item
order geheel getal Visueel herordenen zonder DOM-volgorde te wijzigen

De flex: 1-truc

flex: 1 is shorthand voor flex: 1 1 0%. Het maakt een item:

  • Groei tot beschikbare ruimte (grow: 1)
  • Krimp indien nodig (shrink: 1)
  • Start vanaf nul-grootte (basis: 0%)

Voor kolommen van gelijke breedte geeft flex: 1 op elk item een perfecte verdeling. Voor sidebars die niet onder hun content mogen krimpen: gebruik flex: 0 0 240px (geen grow, geen shrink, basis 240px).

Veelvoorkomende patronen

Gecentreerde hero

.hero {
  display: flex;
  justify-content: center;
  align-items: center;
  min-height: 100vh;
}

Navbar met logo links, links rechts

.nav {
  display: flex;
  align-items: center;
  gap: 2rem;
}
.nav-links {
  margin-left: auto;  /* duw naar rechts */
  display: flex;
  gap: 1rem;
}

Responsive cardrij

.card-row {
  display: flex;
  flex-wrap: wrap;
  gap: 1.5rem;
}
.card {
  flex: 1 1 260px;  /* grow/shrink, 260px minimum voor wrap */
}

Formulier-veld met button (input flexibel, button vast)

.field {
  display: flex;
  gap: 0.5rem;
}
.field input {
  flex: 1;
}
.field button {
  flex: 0 0 auto;
}

Flexbox versus Grid

  • Flexbox: één dimensie (rij OF kolom). Het beste als itemgroottes door content worden bepaald of als je ruimte langs één regel verdeelt.
  • Grid: twee dimensies (rijen EN kolommen met expliciete tracks). Het beste als de layout tegelijk een rij- en kolomstructuur heeft.

Voor een nav bar of een stapel kaarten: Flexbox. Voor een productkaarten-grid met meerdere uitgelijnde rijen: CSS Grid. Veel echte pagina’s gebruiken beide, een Grid-pagina-layout met Flexbox binnen componenten.

Veelvoorkomende valkuilen

  • Items vullen de container niet: standaard align-items: stretch werkt alleen als items geen vaste hoogte hebben. Bij een expliciete hoogte blijven ze op die maat.
  • gap werkt niet: check browser-support. Flex-gap kwam laat; Safari <14.1 ondersteunde het niet. Vanaf 2024 is het universeel.
  • Kinderen van een column-flex collapsen: een flex-column heeft align-items: stretch als default, wat items uitrekt naar containerbreedte. Als één kind een breedte zet, breekt het eruit.
  • order is alleen visueel: screenreaders en toetsenbordnavigatie volgen de DOM-volgorde. Gebruik order niet om content begrijpelijk te maken; alleen voor visuele finishing.

Veelgestelde vragen

Grid voor tweedimensionale paginalayouts (rijen en kolommen samen). Flexbox voor eendimensionale verdelingen (nav bar, buttonrij, stapel). Binnen een Grid-cel: Flexbox voor de interne layout. De meeste complexe UI’s gebruiken beide.

Omdat de default voor flex-shrink 1 is, maar de default voor min-width auto is, wat gelijk is aan content-breedte. Zet min-width: 0 (of min-inline-size: 0) op het item zodat het onder zijn intrinsieke grootte mag krimpen.

display: flex; justify-content: center; align-items: center; op de container. Dekt het overgrote deel van de “centreer dit ding”-gevallen met twee regels.

Ja, in alle moderne browsers. Safari was laat (toegevoegd in 14.1, april 2021); vandaag de dag ondersteunt elke grote browser het. Vervang margin-gebaseerde spacing door gap waar je kunt, veel simpeler.

Gerelateerde tools

Tool beschikbaar in andere talen