Getting Started

Grid System

Learn how to use Mod's flexible, responsive grid system for creating layouts.

Mod includes a flexible, responsive grid system built on CSS Flexbox that adapts to different screen sizes. The grid system uses a 12-column layout with responsive breakpoints and supports both fixed-width and fluid containers.

Basic Structure

The grid system consists of three main components:

  • Container (.mod-grid or .mod-grid-fluid)
  • Row (.mod-grid-row)
  • Columns (.mod-grid-column-*)

Basic Grid Structure

<div class="mod-grid">
  <div class="mod-grid-row">
    <div class="mod-grid-column-6">
      Half width column
    </div>
    <div class="mod-grid-column-6">
      Half width column
    </div>
  </div>
</div>

Containers

Fixed Container

The .mod-grid class creates a fixed-width container that centers content:

Fixed Container

<div class="mod-grid">
  <!-- Grid content -->
</div>

Fluid Container

The .mod-grid-fluid class creates a full-width container:

Fluid Container

<div class="mod-grid-fluid">
  <!-- Grid content -->
</div>

Rows

Rows (.mod-grid-row) create horizontal groups of columns and handle spacing:

  • Uses flexbox with flex-wrap: wrap
  • Adds negative margins to offset column padding
  • Automatically adds bottom margin between rows
  • Last row has no bottom margin

Multiple Rows

<div class="mod-grid">
  <div class="mod-grid-row">
    <!-- Columns go here -->
  </div>
  <div class="mod-grid-row">
    <!-- Another row -->
  </div>
</div>

Columns

Columns use a 12-column system with responsive breakpoints. All columns have padding for gutters.

Basic Columns

For medium screens and up (940px+), use numbered classes:

Basic Column Layout

<div class="mod-grid-row">
  <div class="mod-grid-column-4">1/3 width</div>
  <div class="mod-grid-column-8">2/3 width</div>
</div>

Available Column Sizes

  • .mod-grid-column-1 through .mod-grid-column-12
  • Each number represents the fraction of 12 columns

Responsive Breakpoints

The grid system includes multiple responsive breakpoints:

Breakpoint Screen Size Suffix Example
Small 740px+ -sm .mod-grid-column-6-sm
Medium 940px+ -md or none .mod-grid-column-6-md or .mod-grid-column-6
Large 1040px+ -lg .mod-grid-column-6-lg
Extra Large 1140px+ -1x .mod-grid-column-6-1x
2X Large 1240px+ -2x .mod-grid-column-6-2x
3X Large 1340px+ -3x .mod-grid-column-6-3x

Responsive Example

Responsive Grid Layout

<div class="mod-grid-row">
  <div class="mod-grid-column-12 mod-grid-column-6-sm mod-grid-column-4-md mod-grid-column-3-lg">
    <!-- Full width on mobile, half on small, 1/3 on medium, 1/4 on large -->
  </div>
</div>

Column Offsets

Use offset classes to push columns to the right (available for medium screens and up):

Column Offsets

<div class="mod-grid-row">
  <div class="mod-grid-column-4 mod-grid-offset-4">
    <!-- 4 columns wide, offset by 4 columns (centered) -->
  </div>
</div>

Available Offsets

  • .mod-grid-offset-1 through .mod-grid-offset-11

Mobile-First Approach

Mobile-First Design

The grid system is mobile-first, meaning columns stack vertically on mobile by default. Apply responsive classes to change layout at larger screens.

The grid system is mobile-first, meaning:

  • Columns stack vertically on mobile by default
  • Apply responsive classes to change layout at larger screens
  • Each column gets bottom margin on mobile for spacing

Mobile-First Layout

<div class="mod-grid-row">
  <!-- Stacked on mobile, side-by-side on small screens and up -->
  <div class="mod-grid-column-6-sm">Column 1</div>
  <div class="mod-grid-column-6-sm">Column 2</div>
</div>

Spacing

The grid system includes automatic spacing:

  • Column gutters: 10px padding on each side (20px total between columns)
  • Row spacing: 10px bottom margin on mobile, 20px on tablet and up
  • Column spacing: Bottom margin between stacked columns on mobile

Common Patterns

Equal Width Columns

Equal Width Columns

<div class="mod-grid-row">
  <div class="mod-grid-column-4">1/3</div>
  <div class="mod-grid-column-4">1/3</div>
  <div class="mod-grid-column-4">1/3</div>
</div>

Sidebar Layout

<div class="mod-grid-row">
  <div class="mod-grid-column-8">Main content</div>
  <div class="mod-grid-column-4">Sidebar</div>
</div>

Centered Content

Centered Content

<div class="mod-grid-row">
  <div class="mod-grid-column-6 mod-grid-offset-3">
    Centered content
  </div>
</div>

Complex Responsive Layout

Complex Responsive Layout

<div class="mod-grid-row">
  <div class="mod-grid-column-12 mod-grid-column-6-sm mod-grid-column-3-lg">
    <!-- Full width mobile, half tablet, quarter desktop -->
  </div>
  <div class="mod-grid-column-12 mod-grid-column-6-sm mod-grid-column-6-lg">
    <!-- Full width mobile, half tablet, half desktop -->
  </div>
  <div class="mod-grid-column-12 mod-grid-column-12-sm mod-grid-column-3-lg">
    <!-- Full width mobile and tablet, quarter desktop -->
  </div>
</div>

Best Practices

Grid Best Practices

Follow these guidelines to ensure your grid layouts work correctly across all devices and screen sizes.

  1. Always wrap columns in rows: Columns should be direct children of .mod-grid-row
  2. Use containers: Wrap your grid in .mod-grid or .mod-grid-fluid
  3. Plan for mobile: Start with mobile layout and enhance for larger screens
  4. Don't exceed 12 columns: Keep the total column count per row at 12 or less
  5. Use semantic HTML: The grid is for layout; use appropriate HTML elements for content structure