Course 01
Ultimate Advanced CSS Course: From Fundamentals to Expert
The language itself, before any layout. You will learn how the cascade picks a winner, how to build a themeable system out of custom properties, and how modern selectors, colour, container queries and containment remove work you used to do in JavaScript.
- Welcome and What You'll Build
- Who This Course Is For
- Setting Up Your Editor and Dev Tools
- Specified, Computed and Used Values
- What Changed in Modern CSS, and What It Replaced
- How to Get the Most Out of This Course
- The Five Steps of the Cascade
- Origins: User Agent, User and Author
- Counting Specificity Properly
- Why a Thousand Classes Never Beat an id
- The !important Escalation Trap
- :is() and :where(), and the Specificity Difference
- @layer: Precedence Without Specificity
- Declaring Layer Order Up Front
- Unlayered Styles and Why They Always Win
- How !important Reverses Layer Order
- Keeping the Cascade Boring
- Which Properties Inherit, and Why
- inherit and initial
- unset and revert
- revert-layer: Undoing a Single Layer
- Resetting an Element with all
- currentColor and Single-Value Inheritance
- Building on Inheritance Instead of Fighting It
- Declaring and Reading a Custom Property
- Fallbacks Inside var()
- Custom Properties Inherit, and That Is the Point
- Scoping Tokens to a Subtree
- Invalid at Computed-Value Time
- Theming with a Token Set
- Component Variants Without New Selectors
- @property: Typing a Custom Property
- Animating a Registered Property
- Structuring Primitive, Semantic and Component Tokens
- :has(), the Parent Selector
- :has() with Live Form State
- :has() for Sibling and Group State
- :not() with a Selector List
- :nth-child() and the An+B Formula
- The of Keyword and Filtered Counting
- Attribute Selectors and the Substring Operators
- Case-Insensitive Attribute Matching
- :focus, :focus-visible and :focus-within
- ::before, ::after and the content Property
- CSS Counters and attr()
- The Interface Pseudo-Elements
- Native Nesting with &
- Compound vs Descendant: The Space That Changes Everything
- Parent-First Selectors with &
- Nesting Media and Container Queries
- What Nesting Does to Specificity
- @scope and the Donut
- Proximity as a Tie-Breaker
- The Unit Families
- em vs rem, and When Each Wins
- ch, ex and Font-Relative Sizing
- Viewport Units and the Mobile Address Bar
- calc() and Mixing Units
- clamp() for Fluid Type
- min() and max() as Guardrails
- Intrinsic Sizing: min-content, max-content, fit-content
- aspect-ratio
- round(), mod() and the Maths Functions
- The Modern rgb() and hsl() Syntax
- Alpha, Four Ways
- Why hsl() Lightness Lies
- oklch() and Perceptual Lightness
- color-mix() and Interpolation Spaces
- Relative Colour Syntax
- Deriving a Whole Palette from One Token
- color-scheme and light-dark()
- Gradients, Hard Stops and Midpoint Hints
- Why Media Queries Are the Wrong Question for a Component
- container-type and @container
- Naming Containers
- Container Query Units
- Style Queries
- Media Query Range Syntax
- Querying the User: the prefers-* Features
- @supports for Properties and Selectors
- Progressive Enhancement That Ages Well
- The filter Functions
- drop-shadow() vs box-shadow
- backdrop-filter and Frosted Glass
- mix-blend-mode and background-blend-mode
- clip-path and the Basic Shapes
- Masking with Gradients and Images
- Layered Shadows That Look Like Light
- background-clip: text
- What z-index Actually Compares
- Everything That Creates a Stacking Context
- isolation: isolate
- Containing Blocks for Absolute and Fixed
- How transform and filter Trap Fixed Elements
- position: sticky, and Its Four Failure Modes
- Scroll Snapping
- Tuning a Scroll Container
- contain and content-visibility
- text-wrap: balance and pretty
- Clamping Text to a Number of Lines
- Logical Properties
- Writing Modes and Direction
- @font-face, font-display and Layout Shift
- Variable Fonts and font-variation-settings
- A Native Accordion with details and summary
- accent-color, caret-color and field-sizing
- Popovers and Anchor Positioning
- A Layer Architecture That Scales
- Importing Third-Party CSS into a Layer
- Naming: BEM, Utilities and Tokens
- Layout, Paint and Composite
- What Actually Costs Frames
- will-change, Used Correctly
- Debugging CSS Methodically
- Capstone: One Component, Every Technique