Lesson 5 / 25
Flexible layouts
Use widths in percentages, em, rem, and viewport units so containers and text scale with the screen.
Relative units over pixels
❌ width: 960px — locked to one size. ✓ width: 100% — fits the container. ✓ max-width: 1200px — limits width while staying flexible. Relative units (%, em, rem, vw, vh) adapt automatically.
Percentage-based layout
Three columns that automatically adjust width on smaller screens.
.container { width: 100%; max-width: 1200px; margin: 0 auto; }
.column { width: 33.333%; float: left; padding: 16px; box-sizing: border-box; }
@media (max-width: 768px) {
.column { width: 50%; }
}
@media (max-width: 480px) {
.column { width: 100%; }
}Using em and rem for consistency
em is relative to the current element's font-size. rem is relative to the root (html). rem is easier to maintain at scale.
html { font-size: 16px; }
body { font-size: 1rem; /* 16px */ line-height: 1.5; }
h1 { font-size: 2.5rem; /* 40px */ margin-bottom: 1rem; }
@media (max-width: 768px) {
html { font-size: 14px; }
/* All rem units now scale down proportionally */
}box-sizing: border-box is essential
By default, padding and borders add to an element's width. box-sizing: border-box makes padding and borders part of the width, making percentage-based layouts much easier to predict.