Next

Flexbox Overview

  • Introduction to Flexbox utilities in Tailwind CSS.
  • What is Flexbox ?

    Flexbox (Flexible Box Layout) is a CSS layout system designed to:

    • Arrange elements in one direction (row or column)

    • Align items easily

    • Distribute space dynamically

    • Handle unknown or dynamic content sizes

    Flexbox is ideal for:

    • Navigation bars

    • Buttons and icons

    • Forms

    • Card layouts

    • Responsive UI sections

    In Tailwind CSS, Flexbox is enabled and controlled entirely using utility classes, without writing CSS.

    Why Flexbox Exists 

    Before Flexbox, developers struggled with:

    • Vertical centering

    • Equal-height columns

    • Dynamic spacing

    • Complex float hacks

    Flexbox was created to:

    • Simplify layout logic

    • Reduce CSS complexity

    • Make alignment predictable

    Flexbox is about alignment and distribution, not page-wide grids.

    Flexbox is One-Dimensional

    Important concept:

    Flexbox works in one direction at a time.

    That direction can be:

    • Horizontal (row)

    • Vertical (column)

    If you need two-dimensional layouts:

    • Use Grid (covered later)

      Enabling Flexbox in Tailwind (flex)

      What Does flex Do?

      The flex utility applies:

      display: flex;

      This:

      • Turns an element into a flex container

      • Makes its direct children flex items

    Basic Flex Container

    flex applies display:flex and arranges the direct child elements in a row.

    <div class="flex">
      <div class="bg-blue-200 p-4">Item 1</div>
      <div class="bg-green-200 p-4">Item 2</div>
      <div class="bg-red-200 p-4">Item 3</div>
    </div>
    • Result:

      • Items appear side by side

      • Layout automatically adapts to content size

        Flex Container vs Flex Items

        Understanding this distinction is critical.

        Flex Container

        • The element with flex

        • Controls layout behavior

        Flex Items

        • Direct children of the flex container

        • Follow container rules

      Flex Container and Flex Items

      The element with flex becomes the container, and its direct children become flex items.

      <div class="flex">   <!-- flex container -->
        <div>Item</div>    <!-- flex item -->
      </div>
      • Nested elements are not flex items unless explicitly made flex.

        Default Flexbox Behavior

        When you apply flex, Tailwind (and CSS) defaults to:

        • Direction → row (horizontal)

        • No wrapping

        • Items aligned to start

        • Items sized by content

        This explains why items appear in a row automatically.

      Common Flexbox Layout

      flex creates a horizontal layout, commonly used for navigation bars, buttons with icons, and card layouts.

      <!-- Navigation Bar -->
      <nav class="flex">
        <span class="mr-4">Logo</span>
        <a class="mr-4">Home</a>
        <a>Contact</a>
      </nav>
      
      <!-- Button with Icon -->
      <button class="flex items-center gap-2 px-4 py-2 bg-blue-600 text-white">
        <span>🔍</span>
        <span>Search</span>
      </button>
      
      <!-- Horizontal Card Layout -->
      <div class="flex gap-4">
        <div class="p-4 bg-white shadow">Card 1</div>
        <div class="p-4 bg-white shadow">Card 2</div>
      </div>
      • Flexbox makes spacing and alignment trivial.

        Flexbox vs Block Layout

      Block Layout

      In block layout, elements stack vertically because each block takes full width.

      <div>
        <div>Item 1</div>
        <div>Item 2</div>
      </div>
        • Items stack vertically

        • Limited alignment control

      Flex Layout

      flex places items in a horizontal row instead of stacking them vertically.

      <div class="flex">
        <div>Item 1</div>
        <div>Item 2</div>
      </div>
        • Items align horizontally

        • Full control over spacing and alignment

        When to Use Flexbox

        Use Flexbox when:

        • Content flows in one direction

        • Alignment matters

        • Content size is dynamic

        • You want simple responsive layouts

        Avoid Flexbox when:

        • You need complex rows + columns → use Grid

          Common Mistakes

          • Forgetting to add flex to parent

          • Applying flex utilities to children instead of parent

          • Expecting flex to work on nested elements

          • Confusing Flexbox with Grid

          • Overusing Flexbox for full-page layouts

          Flexbox is powerful but must be used intentionally.

          Best Practices for Flexbox in Tailwind

          • Always identify the flex container first

          • Think in one direction (row or column)

          • Use spacing utilities (gap, margin) wisely

          • Combine with size utilities when needed

          • Keep layout logic readable

        Next