CSS Grid

Grid basics

Grid container

rechtstreekse parent van de grid items

<div class="container">
  <div class="item item-1"> </div>
  <div class="item item-2"> </div>
  <div class="item item-3"> </div>
</div>

Grid lines

verdeel-lijn

Grid Track

De ruimte tussen twee grid-lijnen.

Grid Area

Volledige ruimte die tussen 4 grid-lijnen ligt

Grid Cel

Een enkelvoudige unit

Display: grid

Display: grid

aanmaken van een nieuw grid

.container {
  display: grid | inline-grid;
}

Columns

 grid-template-columns

<div class="wrapper">
  <div>One</div>
  <div>Two</div>
  <div>Three</div>
  <div>Four</div>
  <div>Five</div>
</div>
.wrapper {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
}

Rows

 grid-template-rows

<div class="wrapper">
  <div>One</div>
  <div>Two</div>
  <div>Three</div>
  <div>Four</div>
  <div>Five</div>
</div>
.wrapper {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  grid-template-rows: 1fr 1fr 1fr;
}

Sizing keywords

  • min-content: the minimum size of the content. Imagine a line of text like “E pluribus unum”, the min-content is likely the width of the word “pluribus”.
  • max-content: the maximum size of the content. Imagine the sentence above, the max-content is the length of the whole sentence.
  • auto: this keyword is a lot like fr units, except that they “lose” the fight in sizing against fr units when allocating the remaining space.
  • fit-content: use the space available, but never less than min-content and never more than max-content.
  • fractional units

CSS Tricks: Fitcontent

{
  grid-template-columns: fit-content(150px) 150px 1fr;
}

Fraction

Fraction unit: fr

<div class="wrapper">
  <div>One</div>
  <div>Two</div>
  <div>Three</div>
  <div>Four</div>
  <div>Five</div>
</div>
.wrapper {
  display: grid;
  grid-template-columns: 2fr 1fr 1fr;
}

repeat()

repeat(#, ... )

.wrapper {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
}
.wrapper {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
}
.wrapper {
  display: grid;
  grid-template-columns: repeat(5, 1fr 2fr);
}

Grid-auto-rows & grid-auto-columns

De grootte bepalen van de auto-gegenereerde tracks (impliciete grids)

.wrapper {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  grid-auto-rows: 200px;
}

Sizing function: Minmax()

bepalen van een minime en maximum waarde

.wrapper {
	grid-template-columns: minmax(100px, 1fr) 3fr;
}

column-gap & row-gap

bepalen van een minime en maximum waarde

.container{
  grid-template-columns: 100px 50px 100px;
  grid-template-rows: 80px auto 80px; 
  column-gap: 10px;
  row-gap: 15px;
  /* gap: 15px 10px; */
}

Optie 1: columns & rows

Werken met columns and rows

Grid kolommen en rijen bepalen en de content de kolommen en rijen laten volgen.

<div class="wrapper">
  <div>One</div>
  <div>Two</div>
  <div>Three</div>
  <div>Four</div>
  <div>Five</div>
</div>
.wrapper {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  grid-template-rows: 150px 150px 100px;
}

Optie 2: start & end

column/row -start & end

<div class="wrapper">
  <div>One</div>
  <div>Two</div>
  <div>Three</div>
  <div>Four</div>
  <div>Five</div>
</div>
.wrapper {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  grid-auto-rows: 100px;
}

.box1 {
  grid-column-start: 1;
  grid-column-end: 4;
  grid-row-start: 1;
  grid-row-end: 3;
}

.box2 {
  grid-column-start: 1;
  grid-row-start: 3;
  grid-row-end: 5;
}

Verkorte notatie

.wrapper {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  grid-auto-rows: 100px;
}

.box1 {
  grid-column: 1 / 4;
  grid-row: 1 / 3;
}

.box2 {
  grid-column: 1;
  grid-row: 3 / 5;
}
.wrapper {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  grid-auto-rows: 100px;
}

.box1 {
  grid-column-start: 1;
  grid-column-end: 4;
  grid-row-start: 1;
  grid-row-end: 3;
}

.box2 {
  grid-column-start: 1;
  grid-row-start: 3;
  grid-row-end: 5;
}

Optie 3: Template areas

Template areas

Een grid template gaan bepalen door een grid area-namen te geven

Template areas

Een grid template gaan bepalen door een grid area-namen te geven

.container {
  grid-template-areas: 
    "<grid-area-name> | . | none | ..."
    "...";
}
  • <grid-area-name> – the name of a grid area specified with grid-area
  • . – a period signifies an empty grid cell
  • none – no grid areas are defined

Template areas


.container {
  display: grid;
  grid-template-columns: 50px 50px 50px 50px;
  grid-template-rows: auto;
  grid-template-areas: 
    "header header header header"
    "main main . sidebar"
    "footer footer footer footer";
}
.item-a {
  grid-area: header;
}
.item-b {
  grid-area: main;
}
.item-c {
  grid-area: sidebar;
}
.item-d {
  grid-area: footer;
}

items uitlijnen

CSS Grid

By Evelien Rutsaert

CSS Grid

CSS Grid

  • 313