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