Lab 04: CSS Custom Properties
Overview
Step 1: Basic var() and Fallbacks
/* Declaration: always starts with -- */
:root {
--color-primary: #3b82f6;
--spacing-base: 16px;
--border-radius: 8px;
--font-size-base: 1rem;
}
/* Usage: var(--name, fallback) */
.button {
background: var(--color-primary);
padding: var(--spacing-base, 1rem); /* fallback if undefined */
border-radius: var(--border-radius);
/* Chained fallbacks */
color: var(--button-color, var(--color-text, #111));
/* Fallback can be any valid value */
font-size: var(--button-font-size, 1rem);
}
/* Using in calc() */
.grid {
gap: calc(var(--spacing-base) * 1.5);
padding: calc(var(--spacing-base) * 2);
}Step 2: Scoping — Root vs Component
Step 3: Dynamic Theming via JavaScript
Step 4: @property — Registered Custom Properties
@property — Registered Custom PropertiesStep 5: Design Token Patterns
Step 6: CSS Variables in Media Queries & Containers
Step 7: Invalid Values and the Initial/Inherit Trick
Step 8: Capstone — CSS Variable Extractor + @property Generator
Summary
Feature
Syntax
Use Case
Last updated
