Lesson 22 / 26
Modern CSS features
clamp(), aspect-ratio, gap, and other modern CSS properties that make responsive design simpler and more intuitive.
CSS clamp() for responsive sizing
clamp(min, preferred, max) scales values smoothly without media queries.
/* Padding grows from 1rem to 3rem as viewport scales */
.section { padding: clamp(1rem, 3vw, 3rem); }
/* Font size scales smoothly from 14px to 20px */
body { font-size: clamp(0.875rem, 1.5vw, 1.25rem); }
/* Width scales with min and max */
.container { width: clamp(300px, 90%, 1200px); }aspect-ratio for media
Preserve image and video aspect ratio automatically, preventing layout shift.
/* Reserve space for image before it loads */
img { aspect-ratio: 16 / 9; width: 100%; object-fit: cover; }
/* Video player */
video { aspect-ratio: 16 / 9; width: 100%; }gap for consistent spacing
Unified spacing between flex and grid items without margin hacks.
.flex-row {
display: flex;
gap: 1rem; /* Space between all items */
flex-wrap: wrap;
}
.grid {
display: grid;
gap: 1.5rem; /* Row and column spacing */
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
}Browser support for modern CSS
clamp(), gap, aspect-ratio and container queries are supported in all modern browsers. Check caniuse.com or MDN for older or newer features.
Safe fallbacks for modern CSS
Use fallbacks for older browsers that don't support modern features.
/* Fallback for older browsers */
.card { width: 33.333%; float: left; }
/* Modern browsers */
@supports (display: grid) {
.card { width: auto; float: none; }
.cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); }
}