CSS Layout
Layout = positioning and arranging elements
Layout Methods
Flexbox · Grid · Float · Position
Modern layout methods:
- Flexbox: One-dimensional layouts
- Grid: Two-dimensional layouts
- Float: Legacy (avoid for layout)
- Position: Absolute positioning
"CSS layout methods include Flexbox for one-dimensional layouts, Grid for two-dimensional layouts, and positioning for absolute placement."
Flexbox
One-dimensional layout (row or column)
.container {
display: flex;
flex-direction: row; /* or column */
justify-content: center; /* main axis */
align-items: center; /* cross axis */
}
"Flexbox provides one-dimensional layouts with powerful alignment and distribution capabilities."
Flexbox Properties
Container + Items
Container:
flex-direction: row/columnjustify-content: main axis alignmentalign-items: cross axis alignmentflex-wrap: wrapping
Items:
flex-grow: grow factorflex-shrink: shrink factorflex-basis: initial size
"Flexbox has container properties (direction, justify, align) and item properties (grow, shrink, basis)."
CSS Grid
Two-dimensional layout (rows + columns)
.container {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
grid-template-rows: auto;
gap: 20px;
}
"CSS Grid enables two-dimensional layouts with precise control over rows and columns."
Grid Properties
Template · Areas · Gap
Container:
grid-template-columns: column sizesgrid-template-rows: row sizesgrid-template-areas: named areasgap: spacing between items
Items:
grid-column: column placementgrid-row: row placementgrid-area: area placement
"Grid provides template properties for defining layout and item properties for placement."
Position Property
Static · Relative · Absolute · Fixed · Sticky
| Value | Behavior |
|---|---|
static | Normal flow (default) |
relative | Offset from normal position |
absolute | Positioned relative to nearest positioned ancestor |
fixed | Positioned relative to viewport |
sticky | Sticks when scrolling |
"Position property controls element positioning: static (default), relative (offset), absolute (positioned), fixed (viewport), sticky (scroll)."
Float (Legacy)
Avoid for layout, use for text wrapping
.float-left {
float: left;
}
- Legacy method
- Use Flexbox/Grid instead
- Still useful for text wrapping around images
"Float is a legacy layout method - use Flexbox or Grid for modern layouts, float only for text wrapping."
Common Layout Patterns
Centering · Sidebar · Cards · Holy Grail
Centering:
.container {
display: flex;
justify-content: center;
align-items: center;
}
Sidebar:
.container {
display: grid;
grid-template-columns: 200px 1fr;
}
"Common patterns include centering with Flexbox, sidebar layouts with Grid, and card grids with Grid or Flexbox."
9️⃣ Responsive Layout
Media queries + flexible units
.container {
display: grid;
grid-template-columns: 1fr;
}
@media (min-width: 768px) {
.container {
grid-template-columns: 1fr 1fr;
}
}
"Responsive layouts use media queries with Flexbox/Grid and flexible units (fr, %, vw) to adapt to screen sizes."
Layout Best Practices
✅ Use Flexbox for one-dimensional layouts ✅ Use Grid for two-dimensional layouts ✅ Use flexible units (fr, %, vw) ✅ Make layouts responsive ✅ Use gap instead of margins ❌ Don't use float for layout ❌ Don't use absolute positioning unnecessarily
"CSS layout methods include Flexbox for one-dimensional layouts with powerful alignment, Grid for two-dimensional layouts with precise control, and positioning for absolute placement. Flexbox uses container and item properties. Grid uses template and placement properties. Float is legacy - use Flexbox/Grid. Combine with media queries for responsive layouts."
🧠 Ultra-Short Cheat Sheet
Flexbox (1D layout)
Grid (2D layout)
Position (absolute/fixed/relative/sticky)
Float (legacy, avoid)
Responsive (media queries)
Flexible units (fr, %, vw)
Gap for spacing