Lab 03: Container Queries

Time: 30 minutes | Level: Advanced | Docker: docker run -it --rm node:20-alpine sh

Overview

Master CSS Container Queries: @container inline-size queries, container-type, named containers, style container queries, nested containers, and real-world card components that reflow at container breakpoints.


Step 1: Container Setup

/* Mark an element as a container */

/* container-type: inline-size */
/* — enables @container queries on inline (width) axis */
/* — does NOT enable height queries */
.card-wrapper {
  container-type: inline-size;
}

/* container-type: size */
/* — enables both width AND height queries */
/* — rare: sizing must not depend on children */
.fixed-panel {
  container-type: size;
  width: 400px;
  height: 300px;
}

/* container-type: normal */
/* — enables style container queries only */
/* — default for all elements */
.style-container {
  container-type: normal;
}

/* Named containers (for targeting specific ancestors) */
.page-layout {
  container-type: inline-size;
  container-name: page;
}

/* Shorthand: container: name / type */
.sidebar {
  container: sidebar / inline-size;
}

.card-grid {
  container: card-grid / inline-size;
}

💡 container-type: inline-size makes the element a containment context. It also applies contain: inline-size layout style automatically.


Step 2: Writing @container Queries


Step 3: Real-World Card Component


Step 4: Nested Containers


Step 5: Style Container Queries

Query CSS custom property values:


Step 6: Container Queries vs Media Queries


Step 7: Practical Pattern — Dashboard Widgets


Step 8: Capstone — Container Query Parser + Breakpoint Calculator

(Create the test file:)

📸 Verified Output:


Summary

Feature
Syntax
Purpose

Inline container

container-type: inline-size

Width-based queries

Size container

container-type: size

Width + height queries

Named container

container: name / type

Target specific ancestor

Width query

@container (min-width: 400px)

Breakpoint

Range syntax

@container (width >= 400px)

Modern syntax

Container unit

font-size: 4cqi

% of container inline

Style query

@container style(--variant: x)

Value-based theming

Nested

Container inside container

Component isolation

Last updated