Tilbage til Fundament og layout

Kontekstdrevet UI

Layoutrelationer og intrinsisk responsivitet

Vælg Flexbox eller Grid ud fra relationen, og lad indholdet bestemme, hvornår layoutet skifter.

Se undervisningsslides

Relevante links

TL;DR

  1. Flexbox er typisk content-first og endimensionalt; Grid er relationship-first og todimensionalt.
  2. De to modeller konkurrerer ikke – de bruges ofte sammen på forskellige niveauer.
  3. auto-fit, minmax() og min() kan gøre et grid responsivt uden et breakpoint for hvert kolonneantal.

Flexbox eller Grid?

Vælg layoutmodel ud fra den relation, containeren skal beskrive:

En navigation kan ofte bygges med begge dele. Forskellen viser sig, når indholdet vokser, wrapper eller skal justeres på tværs af flere rækker. Derfor er det mere nyttigt at spørge “hvilken relation beskriver jeg?” end “hvilken teknologi er bedst?”.

Et intrinsisk grid

Et klassisk card-grid behøver ikke kende antallet af kolonner på forhånd:

.product-grid {
display: grid;
grid-template-columns:
repeat(auto-fit, minmax(min(17rem, 100%), 1fr));
gap: 1rem;
}

Delene har hver sin opgave:

Det er intrinsisk responsivitet: layoutet reagerer på tilgængelig plads og indholdets grænser i stedet for en liste over enheder.

Defensive detaljer

Selv et godt grid kan få overflow på grund af lange ord, URLs eller minimumsstørrelser. Test derfor mellem de kendte viewport-presets, og husk især:

.grid-item {
min-inline-size: 0;
overflow-wrap: anywhere;
}

Undgå også visuel reorder af interaktive elementer med order, *-reverse eller tæt grid-pakning. DOM-rækkefølgen styrer stadig læse- og fokusordenen.

Se mere