Eliminierung technischer Schulden mit PHPStan, Rector PHP und PHPUnit. Über 20 Jahre Praxiserfahrung in skalierbaren Backends.
- Erstellt:
- Aktualisiert:
- Autor:
- Roland Golla
Was ist Semantic HTML?
Semantic HTML (semantisches HTML) bedeutet, HTML Elemente nach ihrer Bedeutung einzusetzen und nicht nach ihrem Aussehen. Ein Button ist ein button, eine Navigation ein nav, eine Überschrift ein h2. Browser, Screenreader, Suchmaschinen und KI Agenten lesen daraus die Struktur einer Seite.
Das Gegenteil ist die sogenannte div Suppe: Seiten, die fast nur aus div und span bestehen und ihre Bedeutung allein über CSS Klassen und JavaScript bekommen. Für sehende Mausnutzer sieht das gleich aus. Für alle anderen fehlt die Hälfte der Information.
Semantisches HTML ist die günstigste Form von Barrierefreiheit. Es kostet keine Extra Zeile Code, bringt Tastaturbedienung, Fokus und Screenreader Ansagen gratis mit und erfüllt viele WCAG 2.2 Kriterien automatisch.
Semantik im Code Review: Hilfe von NCA
Semantisches HTML ist bei uns keine Theorie, sondern der erste Blick in jedem Code Review. Ob Astro Komponente oder Twig Template für Symfony und Sulu: Wer mit den richtigen Elementen startet, spart sich später ARIA Workarounds und Bugfixes.
In bestehenden Projekten suchen wir gezielt nach div Nachbauten, fehlenden Landmarks und kaputten Überschriftenhierarchien und ersetzen sie Komponente für Komponente. Neue Projekte starten bei uns mit einer semantisch sauberen Basis, etwa mit Accessible Astro Components. Wo HTML nicht reicht, setzen wir ARIA gezielt und sparsam ein. Für Überschriften greifen wir auf unsere Erfahrung mit barrierefreien Überschriftenstrukturen zurück. Den Stand halten wir mit einem Accessibility Audit und Struktur Tests im Rahmen unseres barrierefreien Webdesigns fest.
Gesetzliche Konformität & Inklusion. Optimierung von Performance und Conversion durch radikal nutzerzentriertes, universelles Design.
Skalierbare KI-Systeme mit echtem Code Ownership. CI/CD, Backup-Strategien und Infrastruktur, die mit deinem Team wächst.
Was der Accessibility Tree aus HTML macht
Ein Screenreader sieht keine Seite. Er liest den Accessibility Tree, eine vereinfachte Fassung des DOM, in der jedes Element eine Rolle, einen Namen und einen Zustand hat. Diese drei Informationen kommen zum Großteil direkt aus dem HTML Element.
Was ein natives Element automatisch mitbringt:
- Rolle: Der Screenreader sagt Schaltfläche, Link oder Überschrift Ebene 2
- Tastaturbedienung: Fokussierbar, per Enter oder Leertaste auslösbar
- Navigation: Nutzer springen per Taste von Überschrift zu Überschrift oder von Landmark zu Landmark
- Zustände: Aktiviert, deaktiviert, ausgewählt, ohne Extra Code
- Robustheit: Funktioniert in jedem Browser und jeder assistiven Technologie
Die Zahlen zeigen, wie groß das Problem ist. Laut dem WebAIM Million Report 2026 hatten 95,9 Prozent der eine Million meistbesuchten Startseiten erkennbare WCAG Fehler. Übersprungene Überschriftenebenen fanden sich auf 41,8 Prozent der Seiten. Ein main Landmark nutzten nur 46,1 Prozent.
Die wichtigsten semantischen Elemente im Überblick
Landmarks für die Seitenstruktur:
header: Kopfbereich mit Logo und oft der Hauptnavigationnav: Navigationsblöcke, bei mehreren mitaria-labelunterscheidenmain: Der Hauptinhalt, genau einmal pro Seiteaside: Ergänzende Inhalte wie Randspaltenfooter: Fußbereichsearch: Neu im HTML Standard, für Suchbereiche
Elemente für den Inhalt:
h1bish6: Überschriften in logischer Hierarchie, ohne Ebenen zu überspringenarticleundsection: Eigenständige Inhalte und thematische Abschnitteul,ol,dl: Listen, der Screenreader sagt die Anzahl der Einträge antablemitthundcaption: Echte Datentabellen, keine Layouttabellenfigureundfigcaption: Bilder mit Bildunterschrift
Elemente für Interaktion:
buttonfür Aktionen,a hreffür Navigation. Nie vertauschen.labelfür jedes Formularfeld,fieldsetundlegendfür Gruppendetailsundsummary: Aufklapper ohne JavaScriptdialog: Modale Dialoge mit eingebautem Fokus Management
Zwischen div Suppe und getesteter Struktur
Kaum ein Projekt startet bei null oder ist perfekt. Die meisten Seiten stehen irgendwo dazwischen. Diese vier Stufen helfen bei der Einordnung und zeigen den nächsten sinnvollen Schritt.
Semantik Reifegrad: Merkmale und Werkzeuge
Semantisches HTML in der Praxis: Code Beispiele
Das Seitengerüst. Mit wenigen Landmarks können Screenreader Nutzer direkt zu Navigation, Inhalt oder Suche springen.
<body>
<header>
<a href="/">Never Code Alone</a>
<nav aria-label="Hauptnavigation">...</nav>
</header>
<main>
<h1>Semantisches HTML</h1>
<article>
<h2>Warum Semantik zählt</h2>
<p>...</p>
</article>
</main>
<footer>...</footer>
</body>
Button statt div. Der Nachbau braucht Rolle, tabindex und zwei Event Handler, um halbwegs zu funktionieren. Das native Element kann alles von Haus aus.
<!-- Nachbau: viel Code, trotzdem fehleranfällig -->
<div role="button" tabindex="0"
onclick="save()" onkeydown="handleKey(event)">
Speichern
</div>
<!-- Nativ: alles eingebaut -->
<button type="button" onclick="save()">Speichern</button>
Aufklapper ohne JavaScript. FAQ Bereiche und Akkordeons lassen sich mit details und summary bauen. Zustand, Tastatur und Screenreader Ansage liefert der Browser.
<details>
<summary>Was ist semantisches HTML?</summary>
<p>HTML Elemente nach Bedeutung statt nach Aussehen.</p>
</details>
Formularfelder mit echtem Label. Ein Platzhalter ersetzt kein Label. Er verschwindet beim Tippen und wird nicht zuverlässig vorgelesen. Mehr dazu bei den barrierefreien Formularen.
<label for="email">Mail Adresse</label>
<input id="email" type="email" autocomplete="email" required>
Semantisches HTML mit Cypress absichern
Semantik geht leise kaputt. Ein Refactoring macht aus dem button ein gestyltes div, ein neues Layout verliert das main. Niemand merkt es, bis der nächste Audit kommt. Mit ein paar Cypress Tests fällt das beim Pull Request auf.
describe('Semantische Struktur', () => {
beforeEach(() => cy.visit('/'))
it('hat genau ein main und ein h1', () => {
cy.get('main').should('have.length', 1)
cy.get('h1').should('have.length', 1)
})
it('überspringt keine Überschriftenebenen', () => {
cy.get('h1, h2, h3, h4, h5, h6').then(($h) => {
const levels = [...$h].map((el) => Number(el.tagName[1]))
levels.slice(1).forEach((level, i) => {
expect(level - levels[i]).to.be.at.most(1)
})
})
})
it('hat keine Axe Verstöße', () => {
cy.injectAxe()
cy.checkA11y()
})
})
Der letzte Test nutzt das Plugin cypress axe mit axe core. Es findet unter anderem fehlende Labels, doppelte IDs und falsche ARIA Rollen. Wie das Setup genau aussieht, zeigen wir bei axe DevTools und Cypress.
Semantik Fallen aus dem Entwicklungsalltag
- Überschriften nach Optik gewählt. Ein
h4, weil er schön klein ist. Die Hierarchie ist danach kaputt. - Links, die Aktionen auslösen.
a href="#"mit Click Handler stattbutton. - ARIA als Pflaster.
role="button"auf einemdiv, statt gleich einen Button zu nehmen. Der WebAIM Report 2026 zeigt: Seiten mit ARIA hatten im Schnitt mehr Fehler als Seiten ohne. - Layouttabellen. Tabellen für Spalten Layouts statt CSS Grid oder Flexbox.
- Mehrere h1 oder gar keins. Laut WebAIM hatten 18,1 Prozent der Startseiten mehr als ein
h1. - Placeholder statt Label. Formularfelder ohne dauerhaft sichtbare Beschriftung.
Die meisten dieser Fehler entstehen nicht aus Unwissen, sondern aus Komponentenbibliotheken und CSS Frameworks, die optisch sauber, aber semantisch leer sind. Ein Blick in den Accessibility Tree der Browser DevTools zeigt schnell, was wirklich ankommt.
Home pages with ARIA present had significantly more errors.
ARIA 2026: Rollen, Zustände und Patterns für barrierefreie Webanwendungen, fünf goldene Regeln, typische Fehler und WCAG 2.2 Konformität. Im NCA Glossar.
Mehr erfahrenErst HTML, dann CSS, dann ARIA
Unsere Faustregel: Erst das richtige HTML Element suchen, dann CSS, und ARIA nur, wenn es wirklich kein passendes Element gibt. Diese Reihenfolge löst die meisten Barrieren, bevor sie entstehen. Sie ist auch die Grundlage für saubere Tastaturnavigation, eine korrekte Lesereihenfolge und die Kernkonzepte Name, Rolle, Zustand.
Semantik zahlt auf die Robustheit ein, eines der vier POUR Prinzipien. Wer tiefer einsteigen will, findet bei den barrierefreien Headlines, beim Alt Text und bei CSS und Barrierefreiheit die nächsten Schritte.
Ein Nebeneffekt, der 2026 immer wichtiger wird: Semantisches HTML hilft auch Maschinen. Suchmaschinen verstehen die Struktur besser, und KI Agenten, die Websites bedienen, orientieren sich an denselben Rollen und Namen. Mehr dazu bei der Agent Readiness. Für die Prüfung helfen die Firefox Accessibility Tools und der Lighthouse Accessibility Audit.
Wir sind hier, um Ihnen zu helfen. Gemeinsam meistern wir Ihre digitalen Herausforderungen und fördern die Inklusion im Internet. Lassen Sie uns Ihre Projekte mit barrierefreiem Webdesign erfolgreich machen.
Häufige Fragen zu Semantic HTML
Landmarks, Überschriften, button oder Link: kurze Antworten für den Entwicklungsalltag.
Semantic HTML bedeutet, HTML Elemente nach ihrer Bedeutung zu verwenden, also button für Aktionen, nav für Navigation und h2 für Überschriften. Browser, Screenreader, Suchmaschinen und KI Agenten lesen daraus die Struktur einer Seite. Es ist 2026 die Grundlage für WCAG 2.2 Konformität und die günstigste Form von Barrierefreiheit.
Screenreader lesen nicht die Optik, sondern den Accessibility Tree. Rolle, Name und Zustand eines Elements kommen größtenteils direkt aus dem HTML. Native Elemente bringen Tastaturbedienung und Ansagen automatisch mit. Wer div und span nachbaut, muss all das mühsam mit ARIA und JavaScript ergänzen und macht dabei oft Fehler.
Vor allem 1.3.1 Info und Beziehungen, 4.1.2 Name, Rolle, Wert und 2.4.6 Überschriften und Beschriftungen. Indirekt auch 2.1.1 Tastatur, weil native Elemente automatisch bedienbar sind, und 2.4.1 Blöcke umgehen über Landmarks. Mit sauberem HTML erfüllt man viele dieser Kriterien, ohne eine Zeile ARIA zu schreiben.
Landmarks sind Bereiche, zu denen Screenreader Nutzer direkt springen können. Die wichtigsten sind header, nav, main, aside, footer und das neue search Element. Jede Seite sollte genau ein main haben. Mehrere nav Bereiche unterscheidet man mit aria-label, etwa Hauptnavigation und Fußnavigation.
Ja. Suchmaschinen erkennen über Überschriften, main, article und Listen besser, worum es auf einer Seite geht und was der Hauptinhalt ist. Auch KI Suchsysteme und Agenten orientieren sich an dieser Struktur. Semantisches HTML ist kein Ranking Trick, aber eine saubere Basis, auf der gute Inhalte besser verstanden werden.
Nur dann, wenn es für eine Funktion kein passendes HTML Element gibt. Beispiele sind Tabs, Comboboxen oder Baumansichten. Die erste Regel von ARIA lautet deshalb: Wenn ein natives Element existiert, nutze es. Falsch eingesetztes ARIA verschlechtert die Barrierefreiheit, wie der WebAIM Million Report 2026 erneut zeigt.
Ein div hat keine Bedeutung und dient nur zur Gruppierung für CSS oder JavaScript. Eine section kennzeichnet einen thematischen Abschnitt, der typischerweise eine eigene Überschrift hat. Mit einem zugänglichen Namen, etwa über aria-labelledby, wird eine section sogar zum Landmark. Für reine Layoutzwecke bleibt das div die richtige Wahl.
Technisch erlaubt HTML das, für Barrierefreiheit ist genau ein h1 pro Seite aber die klare Empfehlung. Screenreader Nutzer springen oft direkt zum h1, um den Seitentitel zu finden. Mehrere h1 machen die Orientierung schwerer. Danach folgt eine lückenlose Hierarchie aus h2, h3 und so weiter, ohne Ebenen zu überspringen.
Ein Link mit a href führt zu einer anderen Seite oder Stelle. Ein button löst eine Aktion auf der aktuellen Seite aus, etwa Speichern, Öffnen oder In den Warenkorb. Die Regel ist wichtig, weil Screenreader beide unterschiedlich ansagen und Nutzer unterschiedliches Verhalten erwarten. Ein Link mit href Raute und Click Handler ist ein klassischer Fehler.
Der schnellste Weg ist der Accessibility Tree in den Browser DevTools. Er zeigt, welche Rolle und welchen Namen jedes Element für Screenreader hat. Dazu kommen automatisierte Checks mit axe DevTools oder Lighthouse und ein kurzer Test mit einem Screenreader wie NVDA oder VoiceOver. Für Regressionen eignen sich Cypress Tests mit axe core.
Das ist sehr unterschiedlich. Manche Bibliotheken setzen konsequent auf native Elemente und ARIA Patterns, andere liefern optisch saubere, aber semantisch leere div Strukturen. Vor dem Einsatz lohnt ein Blick in den Accessibility Tree und in die Dokumentation zur Barrierefreiheit. Für Astro sind die Accessible Astro Components ein gutes Beispiel.
Ja, das native Aufklapp Element wird von modernen Browsern und Screenreadern gut unterstützt. Es ist per Tastatur bedienbar und sagt den Zustand offen oder geschlossen an. Für einfache Akkordeons und FAQ Bereiche ist es oft die robustere Wahl gegenüber einem Nachbau mit JavaScript und ARIA. Nur beim Styling sollte man den Marker nicht ersatzlos entfernen.
KI Agenten, die Websites selbstständig bedienen, lesen häufig den Accessibility Tree oder das DOM und orientieren sich an Rollen und Namen. Ein echter Button mit klarem Text ist für sie genauso leicht zu finden wie für einen Screenreader. Ein unbeschriftetes div mit Click Handler dagegen nicht. Barrierefreiheit und Agent Readiness gehen hier Hand in Hand.