Lab 10: Dark Mode & Theming
Overview
Step 1: prefers-color-scheme Media Query
/* Base (light) styles */
:root {
--color-bg: #ffffff;
--color-surface: #f5f5f5;
--color-text: #111111;
--color-text-muted: #666666;
--color-primary: #3b82f6;
--color-border: #e0e0e0;
}
/* Dark mode: override tokens */
@media (prefers-color-scheme: dark) {
:root {
--color-bg: #0d0d0d;
--color-surface: #1a1a1a;
--color-text: #f0f0f0;
--color-text-muted: #aaaaaa;
--color-primary: #60a5fa;
--color-border: #333333;
}
}
/* Use tokens throughout */
body {
background: var(--color-bg);
color: var(--color-text);
}
.card {
background: var(--color-surface);
border: 1px solid var(--color-border);
}Step 2: color-scheme Property
Step 3: Manual Theme Toggle with Data Attribute
Step 4: oklch() Color Space
Step 5: forced-colors (High Contrast Mode)
Step 6: JavaScript Theme Switcher
Step 7: Anti-Flash Script
Step 8: Capstone — Theme Token Generator
Summary
Feature
Syntax
Purpose
Last updated
