12 – Tabellen & Formulare 📊✏️
Strukturierte Daten und Benutzereingaben – richtig umgesetzt
📊 1. Was sind Tabellen – und was nicht?
Eine Tabelle ist eine **Gitterstruktur aus Zeilen und Spalten**, die verwandte Daten übersichtlich darstellt.
Erlaubt: Preislisten, Stundenpläne, Vergleichstabellen, Noten.
Verboten: Seiten-Layouts, Menüs, Karten – dafür gibt es Flexbox und Grid!
- Screenreader lesen Zelle für Zelle – chaotische Reihenfolge
- Keine Responsivität
- Schwer zu warten
→ Tabellen sind nur für Daten!
📚 Vertiefung auf W3Schools – HTML Tabellen
W3Schools zeigt alle Tabellen-Elemente, Attribute und barrierefreie Beispiele.
🧱 2. Einfache Tabelle – Schritt für Schritt
Jede Tabelle braucht drei Grundelemente:
<table>– der gesamte Tabellencontainer<tr>– eine Tabellenzeile („table row“)<td>oder<th>– eine Zelle („table data“ oder „table header“)
Beispiel: Preisliste
<table>
<tr>
<th>Produkt</th>
<th>Preis</th>
</tr>
<tr>
<td>Apfel</td>
<td>1,20 €</td>
</tr>
<tr>
<td>Banane</td>
<td>0,80 €</td>
</tr>
</table>
| Produkt | Preis |
|---|---|
| Apfel | 1,20 € |
| Banane | 0,80 € |
-
<th> = Kopfzelle (fett, oft zentriert)-
<td> = Datenzelle (normaler Text)
♿ 3. Barrierefreie Tabellen – semantisch korrekt
Für Screenreader und Suchmaschinen braucht eine Tabelle mehr als nur <table>:
<caption>– Überschrift der gesamten Tabelle (wie<title>für Bilder)<thead>– Kopfbereich (wiederholbar bei langen Tabellen)<tbody>– Hauptdatenbereich<th scope="col">– sagt: „Diese Kopfzelle gilt für die ganze Spalte“
<table>
<caption>Webhosting-Pakete</caption>
<thead>
<tr>
<th scope="col">Paket</th>
<th scope="col">Preis/Monat</th>
<th scope="col">Speicher</th>
</tr>
</thead>
<tbody>
<tr>
<td>Basic</td>
<td>2,99 €</td>
<td>10 GB</td>
</tr>
<tr>
<td>Pro</td>
<td>5,99 €</td>
<td>50 GB</td>
</tr>
</tbody>
</table>
<caption> und scope
verstehen Screenreader die Tabelle nur schwer – das ist eine Barriere!
🧩 4. Verbundene Zellen – colspan und rowspan
Manchmal soll eine Zelle mehrere Spalten oder Zeilen umfassen:
colspan="3"→ Zelle erstreckt sich über 3 Spaltenrowspan="2"→ Zelle erstreckt sich über 2 Zeilen
Beispiel: Ein Titel über mehrere Spalten:
<tr>
<th scope="col">Uhrzeit</th>
<th colspan="3" scope="col">Montag</th>
</tr>
<td>/<th> in den betroffenen Zeilen anpassen – sonst verschiebt sich alles!
📚 Vertiefung auf W3Schools – HTML Formulare
W3Schools erklärt alle Formular-Elemente, Attribute und barrierefreie Beispiele.
✏️ 5. Was sind Formulare?
Formulare ermöglichen es Benutzern, Daten an deine Website zu senden – z. B. Kontaktanfragen, Login, Suche.
Das Grundgerüst:
<form>– der Container (mitactionundmethod)<input>,<textarea>,<select>– Eingabefelder<label>– Beschreibung für jedes Feld (Pflicht für Barrierefreiheit!)<button type="submit">– zum Absenden
♿ 6. Barrierefreie Formulare – richtig verknüpfen
Jedes Eingabefeld braucht ein verknüpftes <label>:
<label for="email">E-Mail-Adresse:</label>
<input type="email" id="email" name="email" required>
→ Das for-Attribut im <label> und die id im <input> müssen identisch sein.
Für Gruppen (z. B. Radiobuttons):
<fieldset>
<legend>Geschlecht:</legend>
<label><input type="radio" name="geschlecht" value="m"> Männlich</label>
<label><input type="radio" name="geschlecht" value="w"> Weiblich</label>
</fieldset>
- Screenreader sagen: „E-Mail-Adresse, Eingabefeld“
- Klick auf das Label fokussiert das Feld (größere Klickfläche!)
- Ohne Verknüpfung: unzugänglich!
❌ 7. Häufige Fehler & Lösungen
| Fehler | Lösung |
|---|---|
Tabelle ohne <caption> |
Immer eine aussagekräftige Überschrift hinzufügen |
Formular ohne <label> |
Jedes Eingabefeld braucht ein Label mit korrektem for/id |
id und for stimmen nicht überein |
Prüfe: for="email" ↔ id="email" |
| Tabelle für Layout genutzt | Verwende Flexbox oder Grid – niemals <table> für Layout! |
🧠 8. KI als Lernpartner – guter Prompt
❌ Schlecht: „Gib mir ein Formular.“
✅ Gut: „Kannst du mir ein barrierefreies Kontaktformular mit Name, E-Mail, Radiobuttons für das Thema und Textarea zeigen – inklusive korrekter Labels, for/id-Verknüpfung, <fieldset> und Erklärung, warum jedes Element wichtig ist?“