HTML Spickzettel
HTML mit praktischen Übungen lernen
Lernen Sie die HTML-Webstruktur durch praktische Übungen und reale Szenarien. LabEx bietet umfassende HTML-Kurse, die wesentliche Elemente, semantische Auszeichnung, Formulare, Medienintegration und moderne HTML5-Funktionen abdecken. Meistern Sie die effiziente Strukturierung von Webseiten und die Organisation von Inhalten für moderne Webentwicklungs-Workflows.
HTML-Dokumentstruktur
Basis-HTML-Dokument: <!DOCTYPE html>
Jedes HTML-Dokument beginnt mit einer Dokumenttypdeklaration und folgt einer Standardstruktur.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Seitentitel</title>
</head>
<body>
<!-- Seiteninhalt kommt hierher -->
</body>
</html>
Melden Sie sich an, um dieses Quiz zu beantworten und Ihren Lernfortschritt zu verfolgen
?Head-Elemente: <head>
Der Head-Bereich enthält Metadaten über das Dokument.
<!-- Zeichenkodierung -->
<meta charset="UTF-8" />
<!-- Viewport für responsives Design -->
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<!-- Seitenbeschreibung -->
<meta name="description" content="Seitenbeschreibung" />
<!-- Link zu CSS -->
<link rel="stylesheet" href="styles.css" />
<!-- Link zu Favicon -->
<link rel="icon" href="favicon.ico" />
HTML-Kommentare: <!-- -->
Kommentare werden nicht angezeigt, helfen aber bei der Dokumentation Ihres Codes.
<!-- Dies ist ein Kommentar -->
<!--
Mehrzeiliger Kommentar
für längere Erklärungen
-->
Anatomie von HTML-Elementen
HTML-Elemente bestehen aus öffnenden Tags, Inhalt und schließenden Tags.
<!-- Element mit Inhalt -->
<p>Dies ist ein Absatz</p>
<!-- Selbstschließende Elemente -->
<img src="image.jpg" alt="Beschreibung" />
<br />
<hr />
<!-- Elemente mit Attributen -->
<a href="https://example.com" target="_blank">Link</a>
<!-- Verschachtelte Elemente -->
<div>
<p>Verschachtelter Absatz</p>
</div>
Textinhaltelemente
Überschriften: h1 bis h6
Definieren die Hierarchie und Wichtigkeit von Inhaltsabschnitten.
<h1>Haupttitel</h1>
<h2>Abschnittstitel</h2>
<h3>Unterabschnittstitel</h3>
<h4>Sub-Unterabschnittstitel</h4>
<h5>Kleinere Überschrift</h5>
<h6>Kleinste Überschrift</h6>
Melden Sie sich an, um dieses Quiz zu beantworten und Ihren Lernfortschritt zu verfolgen
Absätze: p
Das gängigste Element für Textinhaltsblöcke.
<p>
Dies ist ein Textabsatz. Er kann mehrere Sätze enthalten und wird automatisch
umgebrochen.
</p>
<p>Dies ist ein weiterer Absatz. Absätze werden durch Randabstand getrennt.</p>
Textformatierung: <strong>, <em>, <b>, <i>
Elemente zur Hervorhebung und Formatierung von Text inline.
<strong>Starke Wichtigkeit (fett)</strong>
<em>Betonung (kursiv)</em>
<b>Fetter Text</b>
<i>Kursiver Text</i>
<u>Unterstrichener Text</u>
<mark>Hervorgehobener Text</mark>
<small>Kleiner Text</small>
<del>Gelöschter Text</del>
<ins>Eingefügter Text</ins>
Zeilenumbrüche & Abstand: <br>, <hr>, <pre>
Steuern Sie den Textfluss und den Abstand innerhalb des Inhalts.
<!-- Zeilenumbruch -->
Zeile 1<br />
Zeile 2
<!-- Horizontale Linie -->
<hr />
<!-- Vorformatierter Text -->
<pre>
Text mit
beibehaltener Formatierung
und Zeilenumbrüchen
</pre>
<!-- Code-Formatierung -->
<code>console.log('Hello');</code>
Listen & Navigation
Ungeordnete Listen: <ul>
Erstellen Sie Aufzählungslisten für nicht-sequenzielle Elemente.
<ul>
<li>Erstes Element</li>
<li>Zweites Element</li>
<li>Drittes Element</li>
</ul>
<!-- Verschachtelte Listen -->
<ul>
<li>
Hauptelement
<ul>
<li>Unterelement 1</li>
<li>Unterelement 2</li>
</ul>
</li>
</ul>
Geordnete Listen: <ol>
Erstellen Sie nummerierte Listen für sequentielle Elemente.
<ol>
<li>Erster Schritt</li>
<li>Zweiter Schritt</li>
<li>Dritter Schritt</li>
</ol>
<!-- Benutzerdefinierte Nummerierung -->
<ol start="5">
<li>Element 5</li>
<li>Element 6</li>
</ol>
<!-- Verschiedene Nummerierungstypen -->
<ol type="A">
<li>Element A</li>
<li>Element B</li>
</ol>
Beschreibungslisten: <dl>
Erstellen Sie Listen von Begriffen und deren Beschreibungen.
<dl>
<dt>HTML</dt>
<dd>HyperText Markup Language</dd>
<dt>CSS</dt>
<dd>Cascading Style Sheets</dd>
<dt>JavaScript</dt>
<dd>Programmiersprache für das Web</dd>
</dl>
Links & Navigation: <a>
Erstellen Sie Hyperlinks und Navigationsstrukturen.
<!-- Basis-Link -->
<a href="https://example.com">Beispiel besuchen</a>
<!-- Link in neuem Tab -->
<a href="https://example.com" target="_blank">Neuer Tab</a>
<!-- E-Mail-Link -->
<a href="mailto:email@example.com">E-Mail senden</a>
<!-- Telefon-Link -->
<a href="tel:+1234567890">Rufen Sie uns an</a>
<!-- Interne Seitenanker -->
<a href="#section1">Zu Abschnitt 1</a>
<h2 id="section1">Abschnitt 1</h2>
Melden Sie sich an, um dieses Quiz zu beantworten und Ihren Lernfortschritt zu verfolgen
target="_blank" in einem Anker-Tag?Formulare & Eingabeelemente
Grundlegende Formularstruktur: <form>
Die Grundlage für die Erfassung von Benutzereingaben.
<form action="/submit" method="POST">
<label for="username">Benutzername:</label>
<input type="text" id="username" name="username" required />
<label for="email">E-Mail:</label>
<input type="email" id="email" name="email" required />
<input type="submit" value="Senden" />
</form>
Eingabetypen: <input>
Verschiedene Eingabetypen für unterschiedliche Datenerfassungsanforderungen.
<!-- Texteingaben -->
<input type="text" placeholder="Text eingeben" />
<input type="email" placeholder="email@example.com" />
<input type="password" placeholder="Passwort" />
<input type="url" placeholder="https://example.com" />
<input type="tel" placeholder="+1234567890" />
<!-- Zahleneingaben -->
<input type="number" min="1" max="100" step="1" />
<input type="range" min="0" max="100" value="50" />
<!-- Datum und Uhrzeit -->
<input type="date" />
<input type="time" />
<input type="datetime-local" />
Formularelemente: <checkbox>, <radio>, <select>, <textarea>
Zusätzliche Formularelemente für die Benutzerinteraktion.
<!-- Checkboxen -->
<input type="checkbox" id="agree" name="agree" />
<label for="agree">Ich stimme den Bedingungen zu</label>
<!-- Radio-Buttons -->
<input type="radio" id="option1" name="choice" value="1" />
<label for="option1">Option 1</label>
<input type="radio" id="option2" name="choice" value="2" />
<label for="option2">Option 2</label>
<!-- Select-Dropdown -->
<select name="country">
<option value="us">Vereinigte Staaten</option>
<option value="uk">Vereinigtes Königreich</option>
<option value="ca">Kanada</option>
</select>
<!-- Textbereich -->
<textarea
name="message"
rows="4"
cols="50"
placeholder="Geben Sie Ihre Nachricht ein"
></textarea>
Formularvalidierung: required, min, max, pattern
Integrierte HTML-Formularvalidierungsattribute.
<input type="text" required />
<input type="email" required />
<input type="text" minlength="3" maxlength="20" />
<input type="number" min="1" max="100" />
<input type="text" pattern="[0-9]{3}-[0-9]{3}-[0-9]{4}" />
Melden Sie sich an, um dieses Quiz zu beantworten und Ihren Lernfortschritt zu verfolgen
required in einem HTML-Input?Medienelemente
Bilder: <img>, <picture>
Bilder mit verschiedenen Attributen und Optionen anzeigen.
<!-- Basisbild -->
<img src="image.jpg" alt="Beschreibung" />
<!-- Responsives Bild -->
<img src="image.jpg" alt="Beschreibung" width="100%" height="auto" />
<!-- Bild mit Größe -->
<img src="image.jpg" alt="Beschreibung" width="300" height="200" />
<!-- Picture-Element für responsive Bilder -->
<picture>
<source media="(min-width: 800px)" srcset="large.jpg" />
<source media="(min-width: 400px)" srcset="medium.jpg" />
<img src="small.jpg" alt="Beschreibung" />
</picture>
Audio: <audio>
Audiodaten mit Wiedergabesteuerungen einbetten.
<!-- Basis-Audio -->
<audio controls>
<source src="audio.mp3" type="audio/mpeg" />
<source src="audio.ogg" type="audio/ogg" />
Ihr Browser unterstützt Audio nicht.
</audio>
<!-- Audio mit Autoplay -->
<audio controls autoplay loop>
<source src="background.mp3" type="audio/mpeg" />
</audio>
Video: <video>
Videoinhalte mit umfassenden Optionen einbetten.
<!-- Basis-Video -->
<video controls width="400" height="300">
<source src="video.mp4" type="video/mp4" />
<source src="video.webm" type="video/webm" />
Ihr Browser unterstützt Video nicht.
</video>
<!-- Video mit Poster und Attributen -->
<video controls poster="thumbnail.jpg" width="100%" height="auto">
<source src="video.mp4" type="video/mp4" />
<track src="captions.vtt" kind="captions" srclang="en" label="English" />
</video>
Eingebettete Inhalte: <iframe>
Externe Inhalte und Anwendungen einbetten.
<!-- iFrame für externe Inhalte -->
<iframe src="https://example.com" width="100%" height="400"></iframe>
<!-- YouTube-Video-Embed -->
<iframe
width="560"
height="315"
src="https://www.youtube.com/embed/VIDEO_ID"
></iframe>
<!-- Google Maps Embed -->
<iframe src="https://maps.google.com/..."></iframe>
Tabellen
Grundlegende Tabellenstruktur: <table>
Strukturierte Datendarstellungen mit Tabellen erstellen.
<table>
<thead>
<tr>
<th>Name</th>
<th>Alter</th>
<th>Stadt</th>
</tr>
</thead>
<tbody>
<tr>
<td>John</td>
<td>25</td>
<td>New York</td>
</tr>
<tr>
<td>Jane</td>
<td>30</td>
<td>London</td>
</tr>
</tbody>
</table>
Erweiterte Tabellenfunktionen: rowspan, colspan, <caption>
Erweiterte Tabellenfunktionalität mit Spanning und Gruppierung.
<table>
<caption>
Verkaufsbericht
</caption>
<colgroup>
<col style="width: 50%" />
<col style="width: 25%" />
<col style="width: 25%" />
</colgroup>
<thead>
<tr>
<th rowspan="2">Produkt</th>
<th colspan="2">Verkäufe</th>
</tr>
<tr>
<th>Q1</th>
<th>Q2</th>
</tr>
</thead>
<tbody>
<tr>
<td>Produkt A</td>
<td>$1000</td>
<td>$1200</td>
</tr>
</tbody>
</table>
Semantische HTML5-Elemente
Seitenstruktur-Elemente: <header>, <nav>, <main>, <footer>
Definieren Sie die Hauptabschnitte des Seitenlayouts.
<!-- Seitenkopf -->
<header>
<nav>
<ul>
<li><a href="#home">Startseite</a></li>
<li><a href="#about">Über uns</a></li>
</ul>
</nav>
</header>
<!-- Hauptinhalt -->
<main>
<article>
<h1>Artikeltitel</h1>
<p>Artikelinhalt...</p>
</article>
</main>
<!-- Seitenleiste -->
<aside>
<h2>Verwandte Links</h2>
<ul>
<li><a href="#">Link 1</a></li>
</ul>
</aside>
<!-- Seitenfußzeile -->
<footer>
<p>© 2024 Firmenname</p>
</footer>
Inhaltgruppierungselemente: <section>, <article>, <div>, <figure>
Organisieren und gruppieren Sie zusammengehörige Inhaltsabschnitte.
<!-- Generischer Abschnitt -->
<section>
<h2>Abschnittstitel</h2>
<p>Abschnittsinhalt...</p>
</section>
<!-- Eigenständiger Artikel -->
<article>
<header>
<h1>Artikeltitel</h1>
<time datetime="2024-01-01">1. Januar 2024</time>
</header>
<p>Artikelinhalt...</p>
</article>
<!-- Generischer Container -->
<div class="container">
<p>Generische Inhaltsgruppierung</p>
</div>
<!-- Figur mit Bildunterschrift -->
<figure>
<img src="chart.jpg" alt="Verkaufsdiagramm" />
<figcaption>Verkaufsdaten für Q1 2024</figcaption>
</figure>
HTML-Attribute
Globale Attribute: id, class, title, data-*
Attribute, die auf jedem HTML-Element verwendet werden können.
<!-- ID zur eindeutigen Identifizierung -->
<div id="unique-element">Inhalt</div>
<!-- Klasse für Styling und Auswahl -->
<p class="highlight important">Text</p>
<!-- Titel für Tooltips -->
<span title="Dies ist ein Tooltip">Fahren Sie mit der Maus darüber</span>
<!-- Datenattribute -->
<div data-user-id="123" data-role="admin">Benutzer</div>
<!-- Sprache -->
<p lang="es">Hola mundo</p>
<!-- Inhaltsrichtung -->
<p dir="rtl">Rechts nach links Text</p>
<!-- Ausgeblendete Elemente -->
<div hidden>Wird nicht angezeigt</div>
Barrierefreiheitsattribute: alt, aria-*, tabindex, role
Attribute, die die Barrierefreiheit und Benutzererfahrung verbessern.
<!-- Alternativtext für Bilder -->
<img src="photo.jpg" alt="Ein Sonnenuntergang über Bergen" />
<!-- ARIA-Labels -->
<button aria-label="Dialog schließen">×</button>
<div aria-hidden="true">Dekorativer Inhalt</div>
<!-- Formular-Barrierefreiheit -->
<label for="email">E-Mail-Adresse:</label>
<input type="email" id="email" aria-describedby="email-help" />
<small id="email-help">Wir werden Ihre E-Mail niemals weitergeben</small>
<!-- Tab-Index -->
<div tabindex="0">Fokusfähiges div</div>
<div tabindex="-1">Programmatisch fokussierbar</div>
<!-- Rollenattribut -->
<div role="button" tabindex="0">Benutzerdefinierter Button</div>
HTML5 Moderne Funktionen
Neue Eingabefunktionen: color, search, file, datalist
HTML5 führte neue Eingabetypen und Attribute ein.
<!-- Neue Eingabetypen -->
<input type="color" value="#ff0000" />
<input type="search" placeholder="Suchen..." />
<input type="file" accept="image/*" multiple />
<!-- Datalist für Autovervollständigung -->
<input list="browsers" name="browser" />
<datalist id="browsers">
<option value="Chrome"></option>
<option value="Firefox"></option>
<option value="Safari"></option>
</datalist>
<!-- Fortschritt und Messwert -->
<progress value="70" max="100">70%</progress>
<meter value="0.6">60%</meter>
Canvas & SVG: <canvas>, <svg>
Grafik- und Zeichenfunktionen in HTML5.
<!-- Canvas für dynamische Grafiken -->
<canvas id="myCanvas" width="400" height="200">
Ihr Browser unterstützt Canvas nicht.
</canvas>
<!-- Inline SVG -->
<svg width="100" height="100">
<circle cx="50" cy="50" r="40" fill="blue" stroke="black" stroke-width="2" />
</svg>
Details & Zusammenfassung: <details>, <summary>
Erstellen Sie einklappbare Inhaltsabschnitte ohne JavaScript.
<details>
<summary>Klicken zum Erweitern</summary>
<p>
Dieser Inhalt ist standardmäßig ausgeblendet und wird beim Klicken auf die
Zusammenfassung angezeigt.
</p>
<ul>
<li>Element 1</li>
<li>Element 2</li>
</ul>
</details>
<details open>
<summary>Dies beginnt erweitert</summary>
<p>Inhalt standardmäßig sichtbar.</p>
</details>
Dialog-Element: <dialog>
Native Dialog- und Modal-Funktionalität.
<!-- Dialog-Element -->
<dialog id="myDialog">
<h2>Dialogtitel</h2>
<p>Dialoginhalt hier.</p>
<button onclick="closeDialog()">Schließen</button>
</dialog>
<button onclick="openDialog()">Dialog öffnen</button>
<script>
function openDialog() {
document.getElementById('myDialog').showModal()
}
</script>
Best Practices & Validierung
HTML Best Practices
Schreiben Sie sauberes, wartbares und zugängliches HTML.
<!-- Immer Doctype deklarieren -->
<!DOCTYPE html>
<!-- Semantische Elemente verwenden -->
<header>...</header>
<main>...</main>
<footer>...</footer>
<!-- Korrekte Verschachtelung -->
<div>
<p>Korrekter verschachtelter Inhalt</p>
</div>
<!-- Kleinbuchstaben für Elemente und Attribute verwenden -->
<img src="image.jpg" alt="beschreibung" />
<!-- Alle Tags schließen -->
<p>Schließen Sie immer Ihre Tags</p>
<!-- Aussagekräftigen Alt-Text verwenden -->
<img src="chart.png" alt="Verkäufe stiegen im 4. Quartal um 25%" />
HTML-Validierung & Debugging
Stellen Sie sicher, dass Ihr HTML gültig und zugänglich ist.
<!-- W3C HTML Validator verwenden -->
<!-- https://validator.w3.org/ -->
<!-- Häufige Validierungsfehler -->
<!-- Fehlende Alt-Attribute -->
<img src="image.jpg" alt="" />
<!-- Alt-Text bereitstellen -->
<!-- Nicht geschlossene Tags -->
<p>Textinhalt</p>
<!-- Tags immer schließen -->
<!-- Ungültige Verschachtelung -->
<p>
Gültiger Absatzinhalt
<!-- Blockelemente nicht in Absätze einfügen -->
</p>
<!-- Entwicklertools verwenden -->
<!-- Rechtsklick → Element untersuchen -->
<!-- Auf Fehler im Konsolenbereich prüfen -->
<!-- Barrierefreiheit mit WAVE oder axe validieren -->
HTML-Vorlagen & Frameworks
Template-Engines: Handlebars, Mustache
Dynamische HTML-Generierung mit Template-Sprachen.
<!-- Handlebars-Vorlage -->
<div>
<h1>{{title}}</h1>
{{#each items}}
<p>{{this}}</p>
{{/each}}
</div>
<!-- Mustache-Vorlage -->
<div>
<h1>{{title}}</h1>
{{#items}}
<p>{{.}}</p>
{{/items}}
</div>
Web Components: <template>, Custom Elements
Wiederverwendbare benutzerdefinierte HTML-Elemente.
<!-- Benutzerdefinierte Elementdefinition -->
<template id="my-component">
<style>
p {
color: blue;
}
</style>
<p><slot></slot></p>
</template>
<!-- Verwendung -->
<my-component>Hallo Welt</my-component>
<script>
class MyComponent extends HTMLElement {
// Komponentenlogik
}
customElements.define('my-component', MyComponent)
</script>
Framework-Integration: React JSX, Vue Templates
HTML innerhalb moderner JavaScript-Frameworks.
<!-- React JSX -->
function Component() { return (
<div className="container">
<h1>{title}</h1>
<p>Inhalt hier</p>
</div>
); }
<!-- Vue-Vorlage -->
<template>
<div class="container">
<h1>{{ title }}</h1>
<p v-if="showContent">Inhalt hier</p>
</div>
</template>