• ↑↓ pour naviguer
  • pour ouvrir
  • pour sélectionner
  • ⌘ ⌥ ↵ pour ouvrir dans un panneau
  • ←→ pour naviguer
  • esc pour rejeter
⌘ '
raccourcis clavier

The Problem

CSS is received as text, but the browser needs a structured representation to compute styles for each DOM element. Raw CSS text can’t be queried programmatically.

Core Idea

CSSOM (CSS Object Model) is the tree structure created by parsing CSS. It contains all style rules and is used to compute styles for each DOM element during render tree construction.

How It Works

  1. CSS Received: From stylesheets, <style> tags, inline styles
  2. Parse: Convert to CSSOM tree
    body { color: red; }
    ↓
    CSSOM: selector=body, declarations=[color: red]
    
  3. Style computation: For each DOM element, find matching CSSOM rules
  4. Cascading: Apply specificity, inheritance, !important

Visual Explanation

G CSS CSS Text CSSOM CSSOM Tree (selector + rules) CSS->CSSOM Computed Computed Styles per DOM element CSSOM->Computed

Key Properties

  • CSSOM is separate from DOM (different trees)
  • JavaScript can manipulate CSSOM via document.styleSheets
  • CSS parsing blocks rendering (need styles before paint)
  • Media queries evaluated during CSSOM construction

Connections

Edge Cases & Gotchas

  • document.write() in old browsers could break CSSOM
  • Large stylesheets = slow CSSOM construction
  • @import causes additional network requests
  • CSSOM errors are silently ignored