Skip to content

Bootstrap Responsive Grid

This lesson goes deeper into responsive grid techniques, covering how to mix multiple breakpoints on a single column, use row-cols for repeating grids, and nest responsive structures.

Bootstrap Responsive Grid Overview

A single column element can carry several breakpoint-specific size classes at once, like col-12 col-sm-6 col-md-4 col-lg-3, letting one column progressively shrink as the viewport grows without any additional markup or JavaScript.

For repeating grids like card listings, row-cols-{n} combined with responsive infixes (row-cols-1 row-cols-md-2 row-cols-lg-4) is often simpler than adding individual col-* classes to every child, since the column count lives in one place on the row itself.

Concept Description Common Usage
Multi-breakpoint columns Several col-{bp}-{n} classes on one element Progressive layout changes across screen sizes
row-cols-{n} Sets equal column count for all direct children Repeating card or thumbnail grids
Responsive row-cols row-cols-1 row-cols-md-3, etc. Grids that change density per breakpoint
Nested responsive grids A responsive row/col structure inside a column Complex dashboards or multi-level layouts
Auto-layout columns (col) Equal-width columns without explicit sizes Simple, evenly distributed layouts at any screen size

Bootstrap Responsive Grid Example

<div class="row row-cols-1 row-cols-sm-2 row-cols-lg-4 g-3">
  <div class="col"><div class="card p-3">Card 1</div></div>
  <div class="col"><div class="card p-3">Card 2</div></div>
  <div class="col"><div class="card p-3">Card 3</div></div>
  <div class="col"><div class="card p-3">Card 4</div></div>
</div>

<div class="row mt-4">
  <div class="col-12 col-md-8">
    <div class="row row-cols-2 g-2">
      <div class="col">Nested A</div>
      <div class="col">Nested B</div>
    </div>
  </div>
  <div class="col-12 col-md-4">Sidebar</div>
</div>

The first grid displays one card per row on mobile, two on small screens, and four on large screens and up, all controlled entirely from the row's row-cols classes. The second example nests a two-column grid inside a wider column, showing how responsive grid structures can be embedded within a larger responsive layout.

Top 10 Bootstrap Responsive Grid Examples

These are the advanced responsive grid patterns you'll use for complex, adaptive layouts.

# Example Syntax
1 Multi-breakpoint column sizing <div class="col-12 col-sm-6 col-lg-3">...</div>
2 Responsive row-cols grid <div class="row row-cols-1 row-cols-md-3">...</div>
3 Auto equal-width columns <div class="row"><div class="col">A</div><div class="col">B</div></div>
4 Nested grid inside a column <div class="col-md-8"><div class="row">...</div></div>
5 Responsive gutter with row-cols <div class="row row-cols-2 g-2 g-md-4">...</div>
6 Mixed fixed and auto columns <div class="row"><div class="col-auto">Icon</div><div class="col">Text</div></div>
7 Responsive offset for centering <div class="col-md-6 offset-md-3">...</div>
8 Responsive column reordering <div class="order-md-2">...</div>
9 Grid inside a flex container <div class="d-flex"><div class="row flex-grow-1">...</div></div>
10 Different row-cols per breakpoint chain <div class="row row-cols-1 row-cols-sm-2 row-cols-md-3 row-cols-xl-6">...</div>

Best Practices

  • Use row-cols instead of repeating identical col-* classes on every grid child.
  • Chain multiple breakpoint sizes on one column when a layout needs several distinct stages.
  • Keep nested grids shallow and give inner rows their own clear purpose.
  • Combine offset and column classes together for centered, responsive single-column layouts.
  • Use auto-layout columns (col) for simple, evenly distributed rows without unnecessary explicit sizing.
  • Test row-cols grids at every breakpoint where the column count changes, not just the extremes.
  • Document non-obvious responsive grid decisions with a brief comment for future maintainers.

Common Mistakes

  • Manually repeating the same col-md-4 class on every card instead of using row-cols on the parent row.
  • Nesting grids so deeply that the responsive behavior becomes unpredictable.
  • Forgetting that row-cols sets an equal column count regardless of individual content length.
  • Mixing offset and order utilities carelessly, producing confusing visual results at certain breakpoints.
  • Not testing nested responsive grids independently from their parent layout.
  • Using col-* sizes that don't sum to 12 within a row, causing unintended wrapping.

Key Takeaways

  • Columns can carry multiple breakpoint-specific size classes for progressive responsive behavior.
  • row-cols simplifies repeating grids by setting column count once on the row.
  • Nested rows and columns let you build complex, multi-level responsive layouts.
  • Auto-layout columns distribute space evenly without explicit sizing.
  • Testing at every breakpoint boundary is essential for grids with many responsive stages.

Pro Tip

For any repeating grid of cards, thumbnails, or tiles, default to row-cols-* first; only fall back to individual col-* classes per item when items genuinely need different widths from one another.