TechLead
Lesson 3 of 9
5 min read
Tailwind CSS

Flexbox & Grid Layouts

Build responsive layouts using Tailwind's powerful Flexbox and CSS Grid utilities for any design pattern.

Flexbox & Grid in Tailwind

Tailwind provides comprehensive utilities for both Flexbox and CSS Grid, making it easy to create complex, responsive layouts.

Flexbox Basics

<!-- Enable Flexbox -->
<div class="flex">...</div>
<div class="inline-flex">...</div>

<!-- Flex Direction -->
<div class="flex flex-row">Horizontal (default)</div>
<div class="flex flex-col">Vertical</div>
<div class="flex flex-row-reverse">Reversed horizontal</div>
<div class="flex flex-col-reverse">Reversed vertical</div>

Justify Content (Main Axis)

<div class="flex justify-start">Start (default)</div>
<div class="flex justify-center">Center</div>
<div class="flex justify-end">End</div>
<div class="flex justify-between">Space between</div>
<div class="flex justify-around">Space around</div>
<div class="flex justify-evenly">Space evenly</div>

Align Items (Cross Axis)

<div class="flex items-start">Align start</div>
<div class="flex items-center">Align center</div>
<div class="flex items-end">Align end</div>
<div class="flex items-baseline">Align baseline</div>
<div class="flex items-stretch">Stretch (default)</div>

Flex Wrap

<div class="flex flex-wrap">Wrap items</div>
<div class="flex flex-nowrap">Don't wrap (default)</div>
<div class="flex flex-wrap-reverse">Wrap reversed</div>

Gap (Spacing Between Items)

<div class="flex gap-4">Gap on both axes</div>
<div class="flex gap-x-4">Horizontal gap only</div>
<div class="flex gap-y-4">Vertical gap only</div>

Flex Item Utilities

<div class="flex">
  <div class="flex-1">Grow and shrink equally</div>
  <div class="flex-auto">Grow based on content</div>
  <div class="flex-none">Don't grow or shrink</div>
  <div class="flex-initial">Shrink but don't grow</div>
</div>

<!-- Grow and Shrink -->
<div class="grow">Allow growing</div>
<div class="grow-0">Prevent growing</div>
<div class="shrink">Allow shrinking</div>
<div class="shrink-0">Prevent shrinking</div>

<!-- Order -->
<div class="order-first">First</div>
<div class="order-last">Last</div>
<div class="order-1">Order 1</div>

Common Flexbox Patterns

<!-- Centered content -->
<div class="flex items-center justify-center min-h-screen">
  <div>Perfectly centered!</div>
</div>

<!-- Navigation bar -->
<nav class="flex items-center justify-between px-6 py-4">
  <div class="font-bold text-xl">Logo</div>
  <div class="flex gap-6">
    <a href="#">Home</a>
    <a href="#">About</a>
    <a href="#">Contact</a>
  </div>
</nav>

<!-- Card row -->
<div class="flex flex-wrap gap-4">
  <div class="flex-1 min-w-[300px] p-4 border rounded">Card 1</div>
  <div class="flex-1 min-w-[300px] p-4 border rounded">Card 2</div>
  <div class="flex-1 min-w-[300px] p-4 border rounded">Card 3</div>
</div>

CSS Grid Basics

<!-- Enable Grid -->
<div class="grid">...</div>

<!-- Grid Columns -->
<div class="grid grid-cols-1">1 column</div>
<div class="grid grid-cols-2">2 columns</div>
<div class="grid grid-cols-3">3 columns</div>
<div class="grid grid-cols-4">4 columns</div>
<div class="grid grid-cols-12">12 columns</div>

<!-- Grid Rows -->
<div class="grid grid-rows-3">3 rows</div>
<div class="grid grid-rows-4">4 rows</div>

Grid Gap

<div class="grid grid-cols-3 gap-4">Gap on both axes</div>
<div class="grid grid-cols-3 gap-x-4 gap-y-8">Different gaps</div>

Grid Item Spanning

<div class="grid grid-cols-4 gap-4">
  <div class="col-span-1">1 column</div>
  <div class="col-span-2">2 columns</div>
  <div class="col-span-3">3 columns</div>
  <div class="col-span-full">Full width</div>

  <!-- Row spanning -->
  <div class="row-span-2">2 rows</div>
</div>

<!-- Start and end positions -->
<div class="col-start-2 col-end-4">Columns 2-3</div>
<div class="row-start-1 row-end-3">Rows 1-2</div>

Common Grid Patterns

<!-- Responsive card grid -->
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
  <div class="p-4 border rounded">Card 1</div>
  <div class="p-4 border rounded">Card 2</div>
  <div class="p-4 border rounded">Card 3</div>
  <div class="p-4 border rounded">Card 4</div>
  <div class="p-4 border rounded">Card 5</div>
  <div class="p-4 border rounded">Card 6</div>
</div>

<!-- Holy grail layout -->
<div class="grid grid-cols-12 gap-4 min-h-screen">
  <header class="col-span-12 bg-gray-100 p-4">Header</header>
  <aside class="col-span-2 bg-gray-50 p-4">Sidebar</aside>
  <main class="col-span-8 p-4">Main Content</main>
  <aside class="col-span-2 bg-gray-50 p-4">Right Sidebar</aside>
  <footer class="col-span-12 bg-gray-100 p-4">Footer</footer>
</div>

<!-- Auto-fit grid -->
<div class="grid grid-cols-[repeat(auto-fit,minmax(250px,1fr))] gap-4">
  <div class="p-4 border">Auto-sized card</div>
  <div class="p-4 border">Auto-sized card</div>
  <div class="p-4 border">Auto-sized card</div>
</div>

Continue Learning