Semantisches HTML: Struktur vor Design
Viele Webseiten sehen gut aus – bis man in den Quellcode schaut. Verschachtelte <div>-Container, CSS-Framework-Klassen auf jedem Element, JavaScript das die Darstellung steuert. Für den Browser kein Problem. Für Suchmaschinen, Screenreader und KI-Systeme eine Katastrophe.
Das CMF geht einen anderen Weg: Jeder Blocktyp wird in das semantisch korrekte HTML-Element übersetzt. Keine Abstraktionsschichten, keine Überladung, keine Tricks.
Vom Block zum HTML-Element
Jeder der 8 Blocktypen wird vom Renderer in exakt ein semantisches HTML-Konstrukt übersetzt:
Struktur
heading
→ <h1> bis <h6>
Echte Überschriften, keine gestylten <div>s.
text
→ <p>, <strong>, <em>, <a>
Sanitized HTML. Nur 15 sichere Tags erlaubt.
Medien
image
→ <figure> + <figcaption>
Mit Alt-Text und Lazy-Loading. Ohne Caption: nur <img>.
list
→ <ul> / <ol> + <li>
Echte Listen, kein Pseudo-Markup.
Interaktion
buttons
→ <a class="btn">
Links als Buttons. Kein JavaScript für Navigation.
columns
→ CSS Grid (cols-2 bis cols-5)
Layout per CSS, nicht per JS.
Spezial
html
→ Direktausgabe
Für Embeds und Sonderfälle. Nicht sanitized – volle Kontrolle.
blog_overview
→ <a>-Karten im Grid
Responsive 5/4/3/2/1 Spalten.
Was das CMF bewusst vermeidet
Kein...
- Keine div-Wrapper um Absätze
- Keine data-Attribute für Styling
- Kein JavaScript für die Darstellung
- Kein CSS-Framework (kein Bootstrap, Tailwind)
- Keine verschachtelte Klassen-Hierarchie
- Keine leeren Spacer-Elemente
- Keine Inline-Styles im gerenderten HTML
- Keine externen CDN-Einbindungen
Stattdessen...
- CSS-Variablen für Farben, Abstände, Schriften
- Minimales base.css (~550 Zeilen) für das Grundlayout
- theme.css wird aus JSON automatisch generiert
- custom.css für eigene Klassen
- Kein einziges CSS-Framework geladen
- HTML das auch ohne CSS lesbar ist
- Pagesize unter 50 KB (ohne Bilder)
- Erster Content-Paint in unter 200ms
Wer davon profitiert
Suchmaschinen
Google versteht semantisches HTML besser als div-Suppen. Korrekte Heading-Hierarchie, beschreibende Alt-Texte und saubere Link-Strukturen verbessern das Ranking direkt.
Was das CMF liefert:
- Automatische Sitemap mit lastmod
- Meta-Tags (Title, Description)
- OpenGraph + Twitter-Card-Tags
- Canonical-URLs gegen Duplicate Content
- robots-Meta (noindex/nofollow steuerbar)
KI-Systeme
Sprachmodelle extrahieren Informationen zuverlässiger aus strukturiertem HTML. Ein <h2> ist eindeutig eine Überschrift – ein <div class="heading-xl mt-4 text-primary"> ist es nicht.
Was das CMF liefert:
- Suchindex als strukturiertes JSON (öffentlich)
- Klare Block-Struktur auch im Quellcode
- Keine Framework-Artefakte die das Parsing stören
- API liefert Inhalt als reines JSON – kein HTML-Scraping nötig
Barrierefreiheit
Screenreader navigieren per Heading-Ebene, erkennen Listen als Listen und lesen Links mit Kontext vor. Semantisches HTML ist die Grundlage für Barrierefreiheit.
Was das CMF liefert:
aria-currentauf aktiven Navigationslinksaria-labelauf der Suchfunktion- Skip-Link zum Hauptinhalt
- Keyboard-navigierbare Navigation
- Alt-Texte auf allen Bildern erzwungen
Das Seiten-Layout im Detail
HTML-Grundgerüst
<header>
<nav aria-label="Hauptnavigation">
<ul>
<li><a href="/" aria-current="page">Start</a></li>
<li><a href="/kontakt">Kontakt</a></li>
</ul>
</nav>
</header>
<main id="main-content">
<h1>Seitentitel</h1>
<p>Absatz</p>
<figure>
<img src="..." alt="..." loading="lazy">
<figcaption>Bildtext</figcaption>
</figure>
</main>
<footer>...</footer>Was jedes Element bedeutet
<header>– Kopfbereich der Seite, enthält Navigation<nav>– Navigationsbereich mitaria-labelaria-current="page"– markiert die aktive Seite<main>– Hauptinhalt, Ziel des Skip-Links<h1>– Hauptüberschrift, genau eine pro Seite<figure>+<figcaption>– Bild mit Beschreibungloading="lazy"– Bilder erst laden wenn sichtbar<footer>– Fußbereich, global auf allen Seiten
Jedes Element hat eine Bedeutung, nicht nur eine Darstellung. Das ist der Unterschied zwischen semantischem HTML und div-Suppe.
Meta-Daten und Head-Bereich
Automatisch generiert
- title-Tag: Seitentitel + Site-Name
- meta description aus dem Meta-Objekt
- Canonical-URL gegen Duplicate Content
- og:title, og:description, og:image, og:url
- twitter:card, twitter:title, twitter:image
- robots-Meta (steuerbar pro Seite)
- Viewport-Meta für responsive Darstellung
CSS-Architektur
Drei CSS-Dateien, geladen in dieser Reihenfolge:
- base.css – Grundlayout, Navigation, Responsive (~550 Zeilen)
- theme.css – automatisch aus
styles.jsongeneriert (Farben, Fonts, Abstände) - custom.css – eigene Klassen, überschreibt alles
Kein CSS-Framework, kein Purge-Step, kein PostCSS. Zusammen unter 20 KB – vor Kompression.
Das Internet versteht keine Zauberei, sondern Struktur, Bedeutung und Relevanz. Semantisches HTML ist die Sprache, in der man mit dem Web spricht.