it-praxisportal/courses/html_css/13_bem_methodik_und_modularitaet
Alex Mueller 2571cb8847 feat(ux): responsive kurs-sidebar und kapitel-drawer für alle 13 kurse & web-ide
- Dynamic Sidebar mit window.COURSES_MANIFEST für 13 Kurse (216 Kapitel)
- Kurswechsler Dropdown mit Direktnavigation
- Fortschrittsanzeige mit Solved-Checkmarks (✓) aus localStorage
- Responsive Off-Canvas Drawer mit Floating Action Button (☰ Kapitel) & Backdrop auf Mobile/Tablets
- Web-IDE Topbar Drawer-Button (☰ Kapitel) für unterbrechungsfreien Vollbild-Editor
- Saubere Bereinigung redundanter statischer Legacy-Sidebars
2026-09-12 13:49:46 +02:00
..
aufgabe.html Branding-Update für it-praxisportal.de: Neuer Hero-Bereich, SVG-Favicon, OpenGraph-Metadaten und Plattform-Titel 2026-09-12 13:26:06 +02:00
index.html feat(ux): responsive kurs-sidebar und kapitel-drawer für alle 13 kurse & web-ide 2026-09-12 13:49:46 +02:00
musterloesung.html Branding-Update für it-praxisportal.de: Neuer Hero-Bereich, SVG-Favicon, OpenGraph-Metadaten und Plattform-Titel 2026-09-12 13:26:06 +02:00
README.md Vollständige Umsetzung von Phase A bis C: (1) SQL & Data Analytics Master (16 Module), (2) HTML5 & Modern CSS3 (16 Module) und (3) Go Cloud Microservices (16 Module). Plattform umfasst nun 131 Module über 7 Sprachen 2026-08-30 13:10:38 +02:00
test_aufgabe.js Vollständige Umsetzung von Phase A bis C: (1) SQL & Data Analytics Master (16 Module), (2) HTML5 & Modern CSS3 (16 Module) und (3) Go Cloud Microservices (16 Module). Plattform umfasst nun 131 Module über 7 Sprachen 2026-08-30 13:10:38 +02:00

CSS 13: BEM-Methodik & Modulare CSS-Architektur

In großen Web-Projekten wird unstrukturiertes CSS schnell zu einem unkontrollierbaren Chaos aus Spezifitätskriegen und !important-Hacks. Die BEM-Methodik (Block, Element, Modifier) löst dieses Problem durch eine glasklare, modulare Namenskonvention.


🎯 Lernziele

  1. BEM-Syntax verstehen: Block (.card), Element (.card__header), Modifier (.card--featured).
  2. Spezifitätskriege vermeiden: Flache Selektor-Hierarchien mit nur 1 Klasse Spezifität (0, 1, 0).
  3. Wiederverwendbarkeit maximieren: Isolierte UI-Komponenten, die an jeder Stelle der Website funktionieren.
  4. Element- vs. Block-Modifier: Wann nutzt man .btn--primary vs. .card__title--large?
  5. Praxisnahe Card-Komponenten: Aufbau einer robusten Produktkarten-Bibliothek.

🧠 Die BEM-Formel im Detail

BEM steht für:

  • B (Block): Eine eigenständige, wiederverwendbare UI-Komponente (z. B. .card, .btn, .navbar).
  • E (Element): Ein zwingender Teil eines Blocks, der außerhalb keinen Sinn ergibt. Getrennt mit zwei Unterstrichen __ (z. B. .card__title, .card__body, .card__image).
  • M (Modifier): Eine visuelle Variante oder ein Zustand eines Blocks oder Elements. Getrennt mit zwei Bindestrichen -- (z. B. .card--featured, .btn--primary, .card__badge--success).
<!-- BEM HTML Struktur -->
<article class="card card--featured">
  <div class="card__header">
    <h3 class="card__title">Pro Plan</h3>
    <span class="card__badge card__badge--popular">Bestseller</span>
  </div>
  <div class="card__body">
    <p class="card__text">Alle Premium-Features freigeschaltet.</p>
  </div>
  <div class="card__footer">
    <button class="btn btn--primary btn--large">Jetzt upgraden</button>
  </div>
</article>
/* BEM CSS: Flache Selektoren ohne Verschachtelung! */
.card { ... }
.card--featured { border-color: #6366f1; }

.card__header { display: flex; justify-content: space-between; }
.card__title { font-size: 1.25rem; font-weight: 700; }
.card__badge { font-size: 0.75rem; padding: 4px 8px; border-radius: 9999px; }
.card__badge--popular { background: #f59e0b; color: white; }

.btn { display: inline-block; padding: 8px 16px; border-radius: 6px; }
.btn--primary { background: #4f46e5; color: white; }
.btn--large { padding: 12px 24px; font-size: 1.1rem; }

🎯 Aufgabenstellung in aufgabe.html

  • TEILZIEL 1: Stylinge den Block .pricing-card und seine Elemente .pricing-card__header, .pricing-card__title, .pricing-card__price, .pricing-card__features und .pricing-card__footer.
  • TEILZIEL 2: Implementiere den Block-Modifier .pricing-card--popular mit markanter Randfarbe (border-color: #8b5cf6), Glow-Schatten und Transform.
  • TEILZIEL 3: Stylinge den Button-Block .btn sowie die Modifiers .btn--primary und .btn--outline.
  • TEILZIEL 4: Stylinge das Badge-Element .pricing-card__badge und den Modifier .pricing-card__badge--highlight.

Teste deine BEM-Architektur mit test_aufgabe.js!