<!doctype html>
Erste Zeile jeder Seite: aktiviert den Standard-Modus des Browsers.
<!doctype html>
Alle wichtigen HTML-Elemente und Attribute mit Kurzerklärung und Beispiel – von <a> bis <video>. Tipp: Mit der Suchbox findest du jedes Element in Sekunden, und über die Druckfunktion deines Browsers wird daraus ein Nachschlagewerk für den Schreibtisch.
Nichts gefunden – probiere einen anderen Begriff, z. B. „link“, „formular“ oder „video“.
Erste Zeile jeder Seite: aktiviert den Standard-Modus des Browsers.
<!doctype html>
Wurzelelement – umschließt alles. Sprache immer angeben.
<html lang="de"> … </html>
Unsichtbare Metadaten: Titel, Zeichensatz, Beschreibung.
<head>
<meta charset="utf-8">
<title>Seitentitel</title>
</head>
Alles Sichtbare der Seite.
<body> … </body>
Zeichencodierung – immer UTF-8, möglichst früh im head.
<meta charset="utf-8">
Pflicht für Mobilgeräte: Seite an Bildschirmbreite anpassen.
<meta name="viewport" content="width=device-width, initial-scale=1">
Titel im Browser-Tab und in Suchergebnissen.
<title>Rezepte – Mein Blog</title>
Kommentar – für Menschen, nicht für den Browser.
<!-- Hier beginnt der Hauptteil -->
Überschriften in 6 Ebenen. Eine h1 pro Seite, keine Ebene überspringen.
<h1>Seitenthema</h1>
<h2>Kapitel</h2>
<h3>Unterkapitel</h3>
Absatz – das Brot-und-Butter-Element für Fließtext.
<p>Ein ganz normaler Absatz.</p>
Wichtiger Inhalt (nicht nur fett – Bedeutung!).
<strong>Achtung, heiß!</strong>
Betonung, wie beim Sprechen.
Das war <em>wirklich</em> gut.
Zeilenumbruch. Sparsam einsetzen – nie für Abstände.
Zeile eins<br>Zeile zwei
Thematischer Bruch zwischen Abschnitten.
<hr>
Abgesetztes Zitat; Quelle per cite-Element im footer.
<blockquote>
<p>Weniger ist mehr.</p>
</blockquote>
Kurzes Zitat im Fließtext – der Browser setzt die Anführungszeichen.
Sie sagte <q>bis morgen</q> und ging.
Quelltext im Fließtext.
Das Element <code><p></code> erzeugt Absätze.
Vorformatierter Text – Leerzeichen und Umbrüche bleiben erhalten.
<pre>
eingerückt
bleibt eingerückt
</pre>
Abkürzung mit Erklärung im title-Attribut.
<abbr title="zum Beispiel">z. B.</abbr>
Maschinenlesbare Zeitangabe.
<time datetime="2026-12-24">Heiligabend</time>
Hervorgehobene Fundstelle (z. B. Suchtreffer).
Treffer: <mark>HTML</mark>-Kurs
Kleingedrucktes: rechtliche Hinweise, Nebenbemerkungen.
<small>Alle Angaben ohne Gewähr.</small>
Bedeutungsloser Inline-Container – nur als Styling-Haken.
<span class="preis">9,99 €</span>
Der Link – das wichtigste Element des Webs.
<a href="https://example.org">Sprechender Linktext</a>
Ziel relativ zur aktuellen Datei.
<a href="rezepte/brot.html">Brotrezept</a>
Zu einem Element mit id auf derselben oder einer anderen Seite springen.
<a href="#kontakt">Zum Kontakt</a>
<section id="kontakt">…</section>
E-Mail-Programm bzw. Telefon-App öffnen.
<a href="mailto:post@example.org">Schreib mir</a>
Neuer Tab – immer mit rel="noopener".
<a href="…" target="_blank" rel="noopener">Extern</a>
Datei herunterladen statt anzeigen.
<a href="preisliste.pdf" download>Preisliste (PDF)</a>
Bild einbinden – alt ist Pflicht, width/height verhindern Springen.
<img src="hund.jpg" alt="Schlafender Labrador" width="640" height="427">
Bild (oder Grafik/Code) mit Bildunterschrift.
<figure>
<img src="turm.jpg" alt="Eiffelturm bei Nacht">
<figcaption>Paris im Dezember</figcaption>
</figure>
Responsive Bilder: Browser wählt die passende Größe.
<img src="m.jpg"
srcset="s.jpg 480w, m.jpg 960w, l.jpg 1920w"
sizes="(max-width: 600px) 100vw, 600px"
alt="…">
Moderne Formate mit Fallback oder Art Direction.
<picture>
<source srcset="foto.avif" type="image/avif">
<img src="foto.jpg" alt="…">
</picture>
Bilder/iframes erst laden, wenn sie in Sichtweite kommen.
<img src="…" alt="…" loading="lazy">
Video mit Bedienelementen und Vorschaubild.
<video controls poster="vorschau.jpg">
<source src="film.mp4" type="video/mp4">
</video>
Audio-Player.
<audio controls src="podcast.mp3"></audio>
Fremde Seite einbetten – title ist Pflicht, sandbox zähmt sie.
<iframe src="…" title="Anfahrtskarte" sandbox loading="lazy"></iframe>
Vektorgrafik direkt im HTML – verlustfrei skalierbar.
<svg viewBox="0 0 20 20" width="20" aria-hidden="true">
<circle cx="10" cy="10" r="8"/>
</svg>
Ungeordnete Liste – Reihenfolge egal.
<ul>
<li>Mehl</li>
<li>Wasser</li>
</ul>
Geordnete Liste – Reihenfolge zählt. start/reversed möglich.
<ol>
<li>Teig kneten</li>
<li>Ruhen lassen</li>
</ol>
Beschreibungsliste: Begriff + Erläuterung (Glossar, FAQ).
<dl>
<dt>HTML</dt>
<dd>Auszeichnungssprache des Webs</dd>
</dl>
Tabelle für tabellarische Daten – nie fürs Layout.
<table>
<tr><th scope="col">Tag</th><th scope="col">Zeit</th></tr>
<tr><td>Montag</td><td>9–18 Uhr</td></tr>
</table>
Titel der Tabelle – erstes Kind, wichtig für Screenreader.
<caption>Öffnungszeiten im Sommer</caption>
Kopf-, Rumpf- und Fußbereich der Tabelle.
<thead> … </thead>
<tbody> … </tbody>
Sagt, wofür eine Kopfzelle gilt: Spalte oder Zeile.
<th scope="row">Zeilenkopf</th>
Zelle über mehrere Spalten/Zeilen strecken.
<td colspan="2">gilt für zwei Spalten</td>
Umschließt das Formular; action = Ziel, method = get/post.
<form action="/senden" method="post"> … </form>
Das Pflicht-Duo: label beschreibt, for/id verbindet.
<label for="mail">E-Mail</label>
<input type="email" id="mail" name="mail" required>
text, email, password, number, date, checkbox, radio, file …
<input type="date" id="geb" name="geburtstag">
Mehrzeilige Texteingabe.
<textarea id="msg" name="msg" rows="5"></textarea>
Auswahlliste.
<select id="land" name="land">
<option>Deutschland</option>
<option>Österreich</option>
</select>
Gruppierung zusammengehöriger Felder – Pflicht bei Radio-Gruppen.
<fieldset>
<legend>Zahlungsart</legend>
…
</fieldset>
Schaltfläche; type="submit" sendet, type="button" tut erst mal nichts.
<button type="submit">Absenden</button>
required, minlength, min/max, pattern – eingebaut, ohne JavaScript.
<input type="text" name="plz" pattern="[0-9]{5}" required>
Vorschläge zur freien Eingabe.
<input list="staedte" name="stadt">
<datalist id="staedte">
<option value="Berlin">
</datalist>
Kopfbereich einer Seite oder eines Abschnitts.
<header><h1>Mein Blog</h1></header>
Wesentliche Navigations-Linkblöcke.
<nav aria-label="Hauptnavigation">
<a href="/">Start</a>
</nav>
Der Hauptinhalt – genau einmal pro Seite.
<main> … </main>
In sich abgeschlossener, eigenständiger Inhalt.
<article><h2>Blogbeitrag</h2>…</article>
Thematischer Abschnitt – verdient immer eine eigene Überschrift.
<section><h2>Kapitel 1</h2>…</section>
Randinformation: Sidebar, „Mehr zum Thema“.
<aside>Verwandte Artikel …</aside>
Fußbereich einer Seite oder eines Abschnitts.
<footer><p>© 2026</p></footer>
Bedeutungsloser Block-Container – der ehrliche Styling-Helfer.
<div class="karten-raster"> … </div>
Eigene Daten fürs eigene JavaScript/CSS – nicht für Suchmaschinen.
<li data-produkt-id="4711">…</li>
Auf-/zuklappbarer Bereich; gleiche name-Werte = exklusives Akkordeon.
<details name="faq">
<summary>Frage?</summary>
<p>Antwort.</p>
</details>
Overlay komplett ohne JavaScript – öffnen per popovertarget.
<button popovertarget="info">Info</button>
<div id="info" popover>Hallo!</div>
Modaler Dialog; Fokus und ESC regelt der Browser (Öffnen: 1 Zeile JS).
<dialog id="hinweis">
<p>Gespeichert!</p>
</dialog>
Fortschritt eines Vorgangs.
<progress max="100" value="70">70 %</progress>
Messwert in einem bekannten Bereich (Füllstand, Bewertung).
<meter min="0" max="10" low="3" optimum="9" value="8">8/10</meter>
Element komplett verstecken – für alle, auch Screenreader.
<p hidden>Noch nicht sichtbar.</p>
Beschreibung fürs Suchergebnis (150–160 Zeichen).
<meta name="description" content="Kurz gesagt, worum es hier geht.">
Die „offizielle“ URL bei doppelt erreichbaren Inhalten.
<link rel="canonical" href="https://example.org/seite">
Link-Vorschau in sozialen Netzwerken und Messengern.
<meta property="og:title" content="Titel">
<meta property="og:image" content="https://…/bild.jpg">
Das Tab-Symbol – heute am besten als SVG.
<link rel="icon" href="/favicon.svg" type="image/svg+xml">
JavaScript laden, ohne das Rendern zu blockieren.
<script defer src="app.js"></script>
Dem Browser wichtige Ressourcen früh ankündigen.
<link rel="preload" href="hero.webp" as="image">
Strukturierte Daten für Suchmaschinen (schema.org).
<script type="application/ld+json">
{ "@type": "Article", … }
</script>
Ein Element vermisst oder Lust auf mehr Tiefe? In den Kursen wird jedes davon ausführlich erklärt: Anfänger-Kurs · Fortgeschrittenen-Kurs