Grid & Flexbox
Responsive layout utilities with breakpoint-specific classes for complex layouts.
OxyMade provides comprehensive Grid and Flexbox utility classes for building responsive layouts without writing custom CSS.
Grid System
Basic Grid
Create a grid container:
<div class="grid">
<div>Item 1</div>
<div>Item 2</div>
<div>Item 3</div>
</div>
Grid Columns
Specify the number of columns:
| Class | Columns |
|---|---|
grid-cols-1 | 1 column |
grid-cols-2 | 2 columns |
grid-cols-3 | 3 columns |
grid-cols-4 | 4 columns |
grid-cols-5 | 5 columns |
grid-cols-6 | 6 columns |
grid-cols-12 | 12 columns |
<div class="grid grid-cols-3">
<div>Column 1</div>
<div>Column 2</div>
<div>Column 3</div>
</div>
Responsive Grid Columns
Apply different column counts at breakpoints:
<div class="grid grid-cols-1 md-grid-cols-2 lg-grid-cols-3 xl-grid-cols-4">
<div>Item</div>
<div>Item</div>
<div>Item</div>
<div>Item</div>
</div>
Breakpoint prefixes:
sm-- Phone portrait (≥480px)md-- Phone landscape (≥640px)lg-- Tablet portrait (≥768px)xl-- Tablet landscape (≥1024px)
Grid Gap
Control spacing between grid items:
<div class="grid grid-cols-3 gap-4">
<!-- 1rem gap between items -->
</div>
<div class="grid grid-cols-3 gap-6">
<!-- 1.5rem gap between items -->
</div>
Grid Rows
Specify row configuration:
| Class | Rows |
|---|---|
grid-rows-1 | 1 row |
grid-rows-2 | 2 rows |
grid-rows-3 | 3 rows |
grid-rows-4 | 4 rows |
grid-rows-6 | 6 rows |
Grid Auto Flow
Control how items are placed:
| Class | Behavior |
|---|---|
grid-flow-row | Fill rows first |
grid-flow-col | Fill columns first |
grid-flow-dense | Fill gaps densely |
Flexbox System
Basic Flex Container
<div class="flex">
<div>Item 1</div>
<div>Item 2</div>
<div>Item 3</div>
</div>
Flex Direction
| Class | Direction |
|---|---|
flex-row | Horizontal (default) |
flex-col | Vertical |
flex-row-reverse | Horizontal reversed |
flex-col-reverse | Vertical reversed |
<div class="flex flex-col">
<div>Top</div>
<div>Middle</div>
<div>Bottom</div>
</div>
Flex Wrap
| Class | Behavior |
|---|---|
flex-wrap | Allow wrapping |
flex-nowrap | No wrapping |
flex-wrap-reverse | Wrap reversed |
Justify Content
Horizontal alignment:
| Class | Alignment |
|---|---|
justify-start | Start |
justify-center | Center |
justify-end | End |
justify-between | Space between |
justify-around | Space around |
justify-evenly | Space evenly |
<div class="flex justify-between">
<div>Left</div>
<div>Right</div>
</div>
Align Items
Vertical alignment:
| Class | Alignment |
|---|---|
items-start | Top |
items-center | Center |
items-end | Bottom |
items-stretch | Stretch |
items-baseline | Baseline |
<div class="flex items-center">
<div>Vertically centered</div>
</div>
Align Self
Individual item alignment:
| Class | Alignment |
|---|---|
self-auto | Auto |
self-start | Start |
self-center | Center |
self-end | End |
self-stretch | Stretch |
Flex Gap
<div class="flex gap-4">
<!-- 1rem gap between items -->
</div>
Layout Utilities
Display
| Class | Display |
|---|---|
block | Block |
inline | Inline |
inline-block | Inline-block |
flex | Flex |
inline-flex | Inline-flex |
grid | Grid |
inline-grid | Inline-grid |
hidden | None |
Position
| Class | Position |
|---|---|
static | Static |
relative | Relative |
absolute | Absolute |
fixed | Fixed |
sticky | Sticky |
Overflow
| Class | Overflow |
|---|---|
overflow-auto | Auto |
overflow-hidden | Hidden |
overflow-visible | Visible |
overflow-scroll | Scroll |
overflow-x-auto | X-axis auto |
overflow-y-auto | Y-axis auto |
Z-Index
| Class | Z-Index |
|---|---|
z-0 | 0 |
z-10 | 10 |
z-20 | 20 |
z-30 | 30 |
z-40 | 40 |
z-50 | 50 |
z-auto | auto |
Common Patterns
Centered Content
<div class="flex items-center justify-center">
<div>Centered!</div>
</div>
Responsive Card Grid
<div class="grid grid-cols-1 md-grid-cols-2 lg-grid-cols-3 gap-6">
<div class="card">Card 1</div>
<div class="card">Card 2</div>
<div class="card">Card 3</div>
</div>
Sidebar Layout
<div class="flex flex-col lg-flex-row gap-8">
<aside class="lg-w-64">Sidebar</aside>
<main class="flex-1">Main Content</main>
</div>
Navigation
<nav class="flex items-center justify-between">
<div class="logo">Logo</div>
<ul class="flex gap-4">
<li>Home</li>
<li>About</li>
<li>Contact</li>
</ul>
</nav>
Card with Footer
<div class="flex flex-col h-full">
<div class="flex-1">Card content...</div>
<footer>Card footer</footer>
</div>
Oxygen Integration
Using in Oxygen
- Open Oxygen Builder
- Select an element
- In the Classes panel, find OxyMade collections:
- OxyMade Grid - Grid utilities
- OxyMade Flexbox - Flex utilities
- OxyMade Layout - Display, position, overflow
Building with Collections
Combine utility classes for complex layouts:
grid grid-cols-1 lg-grid-cols-3 gap-6
flex items-center justify-between
Best Practices
Mobile-First
Start with mobile layout, add complexity for larger screens:
<!-- Mobile: 1 col, Tablet: 2 cols, Desktop: 3 cols -->
<div class="grid grid-cols-1 md-grid-cols-2 lg-grid-cols-3">
Semantic Structure
Use layout utilities on container elements:
<!-- Good -->
<section class="grid grid-cols-2 gap-8">
<article>...</article>
<article>...</article>
</section>
<!-- Avoid -->
<div class="grid grid-cols-2 gap-8">
<div>...</div>
<div>...</div>
</div>
Consistent Gaps
Use the spacing scale for gaps:
<div class="grid gap-4"> <!-- Use scale value -->
<div class="flex gap-6"> <!-- Consistent spacing -->
Avoid Nesting
Keep nesting minimal for performance:
<!-- Simple is better -->
<div class="grid grid-cols-3 gap-4">
<div>Item</div>
</div>
<!-- Avoid deep nesting -->
<div class="grid">
<div class="flex">
<div class="grid">
<div class="flex">...</div>
</div>
</div>
</div>
Troubleshooting
Grid Not Working
- Verify the element has
display: grid - Check for conflicting styles
- Ensure grid-cols class is applied
Responsive Classes Not Applying
- Verify breakpoint prefix is correct
- Check viewport width
- Inspect with browser dev tools
Gap Not Showing
- Ensure element is flex or grid
- Check no margin/padding override
- Verify gap value is in the scale