CSS Tutorial
20 Topics- CSS Tutorial Overview
- CSS Introduction
- CSS Fundamentals
- CSS Selectors
- CSS Colors & Backgrounds
- CSS Text & Fonts
- CSS Box Model
- CSS Display & Positioning
- CSS Flexbox
- CSS Grid
- CSS Sizing & Layout
- CSS Lists & Tables
- CSS Transitions & Animations
- CSS Responsive Design
- CSS Advanced Styling
- CSS Functions
- CSS for Accessibility & Print
- CSS Architecture & Methodologies
- CSS Preprocessors & Tools
- CSS Modern & Experimental CSS
CSS Responsive Design & Modern Layouts
From mobile-first progressive enhancement and Media Queries Level 4 to content-driven breakpoints and component-level Container Queries.
1. The Foundations of Responsive Web Design
Coined by Ethan Marcotte in 2010, Responsive Web Design (RWD) rests upon three foundational pillars:
- Fluid Grid Layouts: Building layouts using flexible percentages, fractions (
fr), or Flexbox/Grid instead of fixed pixel widths. - Flexible Media: Constraining images, videos, and canvases with
max-width: 100%; height: auto;so they scale fluidly inside containers without overflowing. - Media Queries: Applying conditional CSS declarations based on device width, height, orientation, or pixel density.
The Critical Viewport Meta Tag:
Without the viewport meta tag, mobile smartphones (iPhone, Android) assume the site was built for desktop and render the page on a virtual 980px canvas, zooming out into tiny, illegible text.
<!-- Essential Viewport Meta Tag --> <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover">
maximum-scale=1.0 or user-scalable=no in your viewport tag. Disabling user pinch-to-zoom is a direct violation of WCAG 1.4.4 (Resize Text) and severely impairs users with low vision.2. Mobile-First vs. Desktop-First Architecture
In production web architecture, Mobile-First is the recognized engineering standard:
| Strategy | Core Media Query | Mental Model & Cascade | Performance Impact |
|---|---|---|---|
| Mobile-First Industry Standard | @media (min-width: 768px) | Base styles are simple and linear. Media queries add complexity as screen size grows. | Fastest for mobile users. Lower CPU overhead on resource-constrained phones. |
| Desktop-First Legacy | @media (max-width: 767px) | Base styles include multi-column desktop grids. Media queries must undo complexity (e.g. float: none; width: 100%). | Forces mobile phones to parse heavy desktop rules only to immediately overwrite them. |
CSS Example
/* Mobile-First Responsive Card Grid */
.responsive-grid {
display: grid;
grid-template-columns: 1fr; /* 1 column on mobile phones */
gap: 16px;
}
/* Tablet: 2 columns */
@media (min-width: 600px) {
.responsive-grid {
grid-template-columns: repeat(2, 1fr);
}
}
/* Desktop: 3 columns */
@media (min-width: 900px) {
.responsive-grid {
grid-template-columns: repeat(3, 1fr);
}
}
.grid-card {
background: #f1f5f9;
border: 1px solid #cbd5e1;
border-radius: 8px;
padding: 16px;
text-align: center;
}3. Media Queries Level 4: Modern Range Syntax
CSS Media Queries Level 4 introduces the Range Syntax, replacing cumbersome compound boolean logic with clean mathematical operators (>=, <=, >, <):
/* Legacy Syntax (Awkward & Verbose) */
@media (min-width: 768px) and (max-width: 1024px) {
.sidebar { width: 250px; }
}
/* Modern Range Syntax (Clean & Mathematical) */
@media (768px <= width <= 1024px) {
.sidebar { width: 250px; }
}
/* Targeted max-width check */
@media (width <= 600px) {
.mobile-menu { display: block; }
}4. CSS Container Queries (@container)
While media queries adapt based on the browser window, Container Queries adapt based on the size of the parent container. This unlocks true modular component architecture.
To use container queries, define a containment context with container-type: inline-size:
CSS Example
/* Container Query in Action */
.component-wrapper {
container-type: inline-size;
container-name: cardContainer;
padding: 10px;
border: 2px dashed #94a3b8;
border-radius: 8px;
}
.cq-card {
display: flex;
flex-direction: column;
background: #fef08a;
padding: 16px;
border-radius: 6px;
gap: 10px;
}
/* When the WRAPPER container is at least 350px wide, flip to horizontal row */
@container cardContainer (min-width: 350px) {
.cq-card {
flex-direction: row;
align-items: center;
background: #bbf7d0;
}
}5. Frequently Asked Questions (FAQ)
font-size: clamp(1.125rem, 2.5vw + 0.5rem, 2.5rem) scales smoothly across every single pixel of screen width without any stepped jumps.container-type: inline-size monitors changes only in the inline dimension (width in horizontal writing modes), allowing vertical block height to grow naturally with content. container-type: size monitors both width and height, but requires an explicit height to be declared to prevent circular dependency layout loops.Explore Related Tools
Hand-picked utilities and calculators related to this tool.
