CSS: cascade
De CSS Cascade is het systeem dat bepaalt welke stijlregels toegepast worden wanneer meerdere regels hetzelfde element beïnvloeden. Het werkt volgens een specifieke volgorde van prioriteiten:
1. Origin en Importance
css
/* User agent styles (browser defaults) - laagste prioriteit */
p { margin: 16px 0; }
/* Author styles (jouw CSS) - normale prioriteit */
p { margin: 20px 0; }
/* User styles (gebruiker instellingen) - hoge prioriteit */
p { margin: 24px 0 !important; }
/* !important author styles - hoogste prioriteit */
p { margin: 10px 0 !important; }
2. Specificity (specificiteit)
CSS berekent een score voor elke selector:
css
/* Specificity: 0,0,0,1 (1 element) */
p { color: blue; }
/* Specificity: 0,0,1,0 (1 class) */
.text { color: red; }
/* Specificity: 0,1,0,0 (1 ID) */
#main { color: green; }
/* Specificity: 0,0,1,1 (1 class + 1 element) */
p.text { color: purple; }
/* Winner: #main (highest specificity) */
Specificity berekening:
- Inline styles: 1,0,0,0
- IDs: 0,1,0,0
- Classes/attributes/pseudo-classes: 0,0,1,0
- Elements/pseudo-elements: 0,0,0,1
3. Source Order (volgorde)
Bij gelijke specificity wint de laatst gedefinieerde regel:
css
.button { background: blue; }
.button { background: red; } /* Deze wint */
html
<!-- Ook belangrijk bij externe stylesheets -->
<link rel="stylesheet" href="base.css">
<link rel="stylesheet" href="theme.css"> <!-- theme.css overschrijft base.css -->
Praktisch Voorbeeld
html
<p id="intro" class="highlight">Hello world</p>
css
/* 1. Element selector - 0,0,0,1 */
p { color: black; }
/* 2. Class selector - 0,0,1,0 */
.highlight { color: blue; }
/* 3. ID selector - 0,1,0,0 */
#intro { color: red; }
/* 4. More specific - 0,1,1,0 */
#intro.highlight { color: green; }
/* 5. !important overrides all */
p { color: purple !important; }
/* Result: purple (because of !important) */
/* Without !important: green (highest specificity) */
Best Practices
- Vermijd !important - maakt cascade management moeilijk
- Gebruik logische specificity - begin met lage specificity, verhoog waar nodig
- Organiseer CSS logisch - van algemeen naar specifiek
- Gebruik CSS variables voor consistentie zonder specificity problemen
De cascade zorgt voor de "C" in CSS en maakt het mogelijk om flexibele, overerfbare stylesystemen te bouwen!