MJ Grid Framework – Complete Documentation
A responsive, mobile-first CSS grid and flexbox framework built with vanilla CSS. No preprocessor required. Supports 6 responsive breakpoints with intuitive naming conventions.
Responsive Breakpoints
Our framework uses industry-standard breakpoints aligned with Tailwind CSS conventions:
| Prefix | Screen Size | Device Type | Example Usage |
|---|---|---|---|
| .col-1 ... .col-4 | 0px – 639px | Mobile phones | Default (no prefix) |
| .col-s-1 ... .col-s-12 | 640px+ | Small / Landscape phones | <div class="col-s-6"> |
| .col-m-1 ... .col-m-12 | 768px+ | Tablets (iPad) | <div class="col-m-6"> |
| .col-l-1 ... .col-l-12 | 1024px+ | Laptops / Desktops | <div class="col-l-6"> |
| .col-xl-1 ... .col-xl-12 | 1280px+ | Large desktops | <div class="col-xl-8"> |
| .col-xxl-1 ... .col-xxl-12 | 1536px+ | Extra large / 4K screens | <div class="col-xxl-10"> |
CSS Grid System
The grid adapts to screen size with different column counts per breakpoint:
Grid Column Count by Breakpoint
Small (640px+): 12 columns
Tablet (768px+): 12 columns
Laptop (1024px+): 12 columns
Large Desktop (1280px+): 12 columns
XXL Screen (1536px+): 12 columns
Basic Grid Setup
<div class="column">Auto column</div>
<div class="column">Auto column</div>
<div class="column">Auto column</div>
</div>
Live Example: Responsive Grid
↳ Resize your browser to see the grid adapt!
Complex Layout Example
<div class="column col-m-2 col-l-3">Sidebar</div>
<div class="column col-m-4 col-l-6">Main content 1</div>
<div class="column col-m-2 col-l-3">Sidebar 2</div>
<div class="column col-m-6 col-l-12">Full width footer</div>
</div>
Column Span Classes
Use column classes to control how many columns an element spans:
Mobile (Default)
Tablet (768px+) — 12 Column Grid
.col-m-3 = span 3 columns (1/4 width)
.col-m-6 = span 6 columns (half width)
.col-m-8 = span 8 columns
.col-m-12 = span 12 columns (full width)
Desktop (1024px+) — 12 Column Grid
.col-s-* @ 640px+
.col-m-* @ 768px+
.col-l-* @ 1024px+
.col-xl-* @ 1280px+
.col-xxl-* @ 1536px+
Common widths:
.col-l-3 = span 3 columns (1/4 width)
.col-l-8 = span 8 columns (2/3 width)
Live Example: Different Column Spans
Responsive Column Combinations
Combine multiple breakpoint classes to control layout at each screen size:
<div class="column col-m-3 col-l-3">Item 2</div>
<div class="column col-m-3 col-l-3">Item 3</div>
<div class="column col-m-3 col-l-3">Item 4</div>
Mobile: Full width (stacks) | Tablet: 2 columns (col-m-6 = half) | Desktop: 4 columns (col-l-3 = quarter)
Example: Hero + Sidebar Layout
<div class="column col-m-6 col-l-4">Sidebar (1/3 width)</div>
Column Positioning (Advanced)
Manually position columns using start and end points (available at 1024px+ only):
.col-end-2 to .col-end-13 = Position column end
.col-span-1 to .col-span-12 = Span X columns
Example: Skip Columns
Grid Gap & Spacing
Control the spacing between grid items:
.grid.gap-half = Half gap (10px)
.grid.gap-0 = No gap (0px)
Live Examples
🔄 Flexbox System
Alternative layout system for flexible box layouts:
Flex Classes
.flex-col = Flex column item
.flex-row = Row wrapper
.flex-direction-column = Column direction
.flex-wrap-wrap = Allow wrapping
Flex Grid Columns
.flex-col = 100% (1 column)
Tablet (768px+):
.flex-col = 33.33% (3 columns)
Desktop (1024px+):
.flex.cols-2 .flex-col = 50%
.flex.cols-3 .flex-col = 33.33%
.flex.cols-4 .flex-col = 25%
...up to .flex.cols-12 .flex-col = 8.33%
Live Examples
Code Example
<div class="flex-col">Item 1</div>
<div class="flex-col">Item 2</div>
<div class="flex-col">Item 3</div>
</div>
✅ Best Practices
1. Mobile-First Approach
❌ Wrong: <div class="col-l-6 col-m-4">
✅ Right: <div class="col-1 col-m-2 col-l-6">
2. Use Semantic Container Widths
<div class="grid">
<div class="column col-m-3 col-l-4">Content</div>
</div>
</div>
3. Combine Grid & Flex Wisely
Use Flex when: You need flexible, auto-sizing items that wrap naturally
4. Gap Consistency
--gap-default: 20px
--gap-half: 10px
🛠 Helpful Utilities
Width Classes
.w-s-1 to .w-s-100 = Width at 640px+
.w-m-1 to .w-m-100 = Width at 768px+
.w-l-1 to .w-l-100 = Width at 1024px+
.w-xl-1 to .w-xl-100 = Width at 1280px+
Example: Responsive Widths
Full on mobile, 50% on tablet, 33% on desktop
</div>
🐛 Troubleshooting
❓ My columns don't align properly
❓ Flex items aren't wrapping
❓ Columns are too narrow/wide
.col-s-6 = half width at 640px+
.col-m-6 = half width at 768px+
.col-l-6 = half width at 1024px+