Follow AiTechWorlds on LinkedIn for professional AI content!Follow Now →
🎨
Web Dev

CSS Flexbox & Grid Master Notes

Visual guide to CSS layouts with every property explained and real-world patterns.

Back to Notes Library

CSS Flexbox & Grid Master Notes

Flexbox: Parent (Container) Properties

css
.container {
  display: flex;

  /* Direction */
  flex-direction: row;            /* default: left to right */
  flex-direction: column;         /* top to bottom */
  flex-direction: row-reverse;
  flex-direction: column-reverse;

  /* Wrapping */
  flex-wrap: nowrap;      /* default: no wrap */
  flex-wrap: wrap;        /* wrap to next line */

  /* Shorthand */
  flex-flow: row wrap;
}

Flexbox: Alignment

css
.container {
  /* Main axis (flex-direction axis) */
  justify-content: flex-start;    /* default */
  justify-content: flex-end;
  justify-content: center;
  justify-content: space-between; /* equal space between */
  justify-content: space-around;  /* space around items */
  justify-content: space-evenly;  /* equal space everywhere */

  /* Cross axis */
  align-items: stretch;     /* default: fill height */
  align-items: flex-start;
  align-items: flex-end;
  align-items: center;      /* vertical center! */
  align-items: baseline;

  /* Multi-line cross axis */
  align-content: flex-start;
  align-content: center;
  align-content: space-between;
}

Flexbox: Child (Item) Properties

css
.item {
  /* flex-grow: how much extra space to take */
  flex-grow: 0;   /* default: don't grow */
  flex-grow: 1;   /* grow to fill space */
  flex-grow: 2;   /* grow twice as much */

  /* flex-shrink: how much to shrink when needed */
  flex-shrink: 1; /* default: shrink equally */
  flex-shrink: 0; /* don't shrink */

  /* flex-basis: initial main-axis size */
  flex-basis: auto;   /* default */
  flex-basis: 200px;
  flex-basis: 25%;

  /* Shorthand: grow shrink basis */
  flex: 1;            /* flex: 1 1 0% */
  flex: 0 0 200px;    /* fixed 200px */
  flex: auto;         /* flex: 1 1 auto */

  /* Self alignment (override align-items) */
  align-self: center;
  align-self: flex-end;

  /* Order (default: 0) */
  order: -1;   /* move to front */
  order: 1;    /* move to back */
}

Common Flexbox Patterns

css
/* Center anything */
.center {
  display: flex;
  justify-content: center;
  align-items: center;
}

/* Sticky footer */
.page {
  display: flex;
  flex-direction: column;
  min-height: 100vh;
}
.page footer { margin-top: auto; }

/* Equal columns */
.cols > * { flex: 1; }

/* Navigation bar */
.nav {
  display: flex;
  align-items: center;
  gap: 1rem;
}
.nav .logo { margin-right: auto; } /* push rest to right */

CSS Grid: Container Properties

css
.container {
  display: grid;

  /* Define columns */
  grid-template-columns: 200px 1fr 1fr;      /* fixed + flexible */
  grid-template-columns: repeat(3, 1fr);     /* 3 equal columns */
  grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); /* responsive */

  /* Define rows */
  grid-template-rows: auto;
  grid-template-rows: 100px 1fr auto;

  /* Gaps */
  gap: 1rem;             /* row and column gap */
  column-gap: 1rem;
  row-gap: 0.5rem;

  /* Auto size for new rows */
  grid-auto-rows: minmax(100px, auto);
}

Grid: Item Placement

css
/* Place items by line numbers */
.item {
  grid-column: 1 / 3;        /* columns 1 to 3 */
  grid-column: 1 / span 2;   /* start at 1, span 2 cols */
  grid-row: 1 / 3;
  grid-row: 2 / span 2;
}

/* Shorthand: row-start / col-start / row-end / col-end */
.item {
  grid-area: 1 / 1 / 3 / 3;
}

Grid: Template Areas

css
.layout {
  display: grid;
  grid-template-columns: 200px 1fr;
  grid-template-rows: auto 1fr auto;
  grid-template-areas:
    "header  header"
    "sidebar main"
    "footer  footer";
  min-height: 100vh;
}

.header  { grid-area: header; }
.sidebar { grid-area: sidebar; }
.main    { grid-area: main; }
.footer  { grid-area: footer; }

Grid: Alignment

css
.container {
  /* Align all items within their cells */
  justify-items: start | end | center | stretch;
  align-items: start | end | center | stretch;

  /* Align entire grid within container */
  justify-content: start | end | center | space-between;
  align-content: start | end | center | space-between;
}

.item {
  /* Override alignment for single item */
  justify-self: start | end | center | stretch;
  align-self: start | end | center | stretch;
}

Responsive Grid Patterns

css
/* Auto-fill: fill available space with columns */
.gallery {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
  gap: 1rem;
}

/* Auto-fit: collapse empty columns */
.cards {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: 1.5rem;
}

/* Responsive without media queries */
.responsive {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 350px), 1fr));
}

Flexbox vs Grid

FeatureFlexboxGrid
Dimension1D (row OR column)2D (row AND column)
Best forComponents, navigationPage layouts, galleries
AlignmentOne axis at a timeBoth axes simultaneously
Content-drivenYes (content determines size)No (layout is explicit)
Browser supportExcellentExcellent
📱

Get more notes like this daily on Telegram!

Free study notes, cheat sheets & AI tips

Join Free →
10K+ Members Growing Daily

Get Free AI Notes Daily

Join AiTechWorlds on Telegram and get daily AI tips, prompt engineering templates, coding resources, and exclusive content — 100% free!

📚 Free Study Notes🤖 AI Tips Daily⚡ Prompt Templates💻 Coding Resources
Join Free Channel

No spam. Leave anytime.

!