5. Unterrichtsblock

Block- und Inline-Elemente
Jedes HTML-Element hat eine Standarddarstellung. Block-Elemente beginnen immer in einer neuen Zeile und nehmen die ganze verfügbare Breite ein. Inline-Elemente stehen im Textfluss und sind nur so breit wie ihr Inhalt.
<p>Ein Absatz ist ein Block-Element.</p>
<div>Ein div auch.</div>
<span>Ein span</span> <a href="#block-inline">ein Link</a> <strong>und strong</strong> stehen in einer Zeile.
Ein Absatz ist ein Block-Element.
| Block-Elemente (neue Zeile, volle Breite) | Inline-Elemente (im Textfluss) |
|---|---|
h1 … h6, p, div | span, a, strong, em |
ul, ol, li, table | img, br, code, abbr |
header, nav, main, section, footer | input, label |
form, figure | sub, sup |
Neutrale Container: div und span
div und span haben keine eigene Bedeutung. Mit div fasst du mehrere Elemente zu einem Block zusammen, mit span markierst du ein Stück Text innerhalb einer Zeile. Sichtbar werden sie erst mit CSS. Bis dahin helfen dir die Entwicklerwerkzeuge (F12): Fährst du dort über ein Element, zeigt der Browser seine Fläche an.
<div>
<h3>Tour zum Wendelstein</h3>
<p>Gehzeit: <span>3 Stunden</span>, Höhe: <span>1838 m</span></p>
</div>
Tour zum Wendelstein
Gehzeit: 3 Stunden, Höhe: 1838 m
p darf keine Block-Elemente wie div oder einen zweiten p enthalten. Und was zuletzt geöffnet wurde, wird zuerst geschlossen: <strong><em>…</em></strong>.Aufgabe 1 – Block oder Inline?
Zeit: ca. 8 Minuten
Erst denken, dann prüfen: Speichere diesen Ausschnitt im body einer neuen Datei block-inline.html.
<h2>Wandertipp</h2>
<span>Start:</span> <strong>Parkplatz</strong> <a href="#">Karte</a>
<p>Gehzeit 3 Stunden</p>
<div>Höhe 1200 m</div>
<span>Schwierigkeit:</span> <em>mittel</em>
- Sage voraus: In wie vielen Zeilen zeigt der Browser das an? Welche Teile stehen gemeinsam in einer Zeile? Prüfe es.
- Ändere genau ein Tag so, dass „Gehzeit 3 Stunden“ in derselben Zeile wie „Karte“ erscheint.
- Erkläre als HTML-Kommentar, woran du ein Block-Element erkennst.
Kontrolle: Erst 5 Zeilen, nach deiner Änderung 4.
Formulare: form, input und label
Mit Formularen sammelt eine Webseite Eingaben, zum Beispiel für eine Anmeldung oder eine Suche. Alle Felder stehen in einem form-Element. action gibt an, wohin die Daten geschickt werden, method wie. Was der Server damit macht, lernst du im 2. Jahr bei PHP.
Das wichtigste Formularelement ist input. Es ist ein leeres Element ohne schließendes Tag. Mit type legst du fest, was für ein Feld es ist, type="text" ist ein einzeiliges Textfeld. Das label beschriftet ein Feld: Sein Attribut for verweist auf die id des Feldes.
<form>
<label for="bsp-vorname">Vorname:</label>
<input type="text" id="bsp-vorname" name="vorname" placeholder="z. B. Lina">
<label for="bsp-ort">Ort:</label>
<input type="text" id="bsp-ort" name="ort" value="Rosenheim">
</form>
Klicke im Ergebnis auf „Vorname:“, dann springt der Cursor ins passende Feld. value füllt ein Feld schon vor, placeholder zeigt nur einen grauen Beispieltext. name ist der Name, unter dem der Inhalt später gesendet wird.
label for und input id müssen exakt gleich sein. Die id darf auf einer Seite nur einmal vorkommen. Ohne name wird ein Feld nicht gesendet.Auswahl: Radio-Buttons und Checkboxen
Mit Radio-Buttons wählt man genau eine von mehreren Möglichkeiten. Alle Buttons einer Frage haben denselben name, jeder einen eigenen value. checked wählt einen Button vor. Mit Checkboxen kann man beliebig viele Haken setzen.
<form>
<p>Welche Tour?</p>
<input type="radio" id="bsp-see" name="tour" value="see" checked>
<label for="bsp-see">Bergsee</label>
<input type="radio" id="bsp-gipfel" name="tour" value="gipfel">
<label for="bsp-gipfel">Gipfel</label>
<p>Extras:</p>
<input type="checkbox" id="bsp-lunch" name="extras" value="lunch">
<label for="bsp-lunch">Lunchpaket</label>
<input type="checkbox" id="bsp-stoecke" name="extras" value="stoecke">
<label for="bsp-stoecke">Leihstöcke</label>
</form>
name bilden eine Gruppe, in der nur einer gewählt sein kann. Gibst du einem Button aus Versehen einen anderen name, lässt er sich zusätzlich anklicken.Absenden: Was kommt beim Server an?
Ein Klick auf <input type="submit"> schickt das Formular ab. Mit method="get" hängt der Browser die Daten hinter einem ? an die Adresse an: jeweils name=Wert, getrennt durch &. So kannst du in der Adresszeile genau sehen, was gesendet wird.
<form action="#absenden" method="get">
<label for="bsp-name">Vorname:</label>
<input type="text" id="bsp-name" name="vorname" value="Lina">
<input type="checkbox" id="bsp-news" name="newsletter" value="ja">
<label for="bsp-news">Newsletter</label>
<input type="submit" value="Absenden">
</form>
Klicke im Ergebnis auf „Absenden“ und sieh in die Adresszeile: Dort steht jetzt ?vorname=Lina#absenden. Setze den Haken und sende noch einmal.
| Situation | Was in der Adresszeile steht |
|---|---|
Textfeld mit name="vorname", Inhalt Lina | vorname=Lina |
Feld ohne name | nichts, das Feld wird nicht gesendet |
Radio-Button gewählt (name="klasse", value="10a") | klasse=10a |
| Checkbox ohne Haken | nichts |
Checkbox mit Haken, aber ohne value | name=on |
| Leerzeichen und Umlaute | Lina+Marie, J%C3%BCrgen (URL-Codierung aus Block 4) |
Mit method="post" werden die Daten unsichtbar mitgeschickt, das braucht man für Passwörter und große Datenmengen. Für heute bleiben wir bei get, weil man dort alles sieht.
name. Bei Radio-Buttons und Checkboxen wird der value gesendet, und zwar nur, wenn sie ausgewählt sind.Aufgabe 2 – Was wird gesendet?
Zeit: ca. 8 Minuten
Lege eine Datei formular-test.html an und schreibe dieses Formular in den body. Es schickt die Daten an sich selbst, du siehst sie nach dem Absenden in der Adresszeile.
<form action="formular-test.html" method="get">
<label for="vorname">Vorname:</label>
<input type="text" id="vorname" name="vorname" value="Lina">
<label for="ort">Ort:</label>
<input type="text" id="ort" value="Bad Aibling">
<input type="radio" id="k10a" name="klasse" value="10a" checked>
<label for="k10a">10a</label>
<input type="radio" id="k10b" name="klasse" value="10b">
<label for="k10b">10b</label>
<input type="checkbox" id="news" name="newsletter" value="ja">
<label for="news">Newsletter</label>
<input type="submit" value="Absenden">
</form>
- Sage voraus, was nach dem Klick auf „Absenden“ hinter dem
?in der Adresszeile steht, wenn du nichts änderst. Prüfe es. - Ändere den Vornamen in „Lina Marie“, wähle 10b und setze den Haken bei „Newsletter“. Sage wieder voraus und prüfe.
- Ein Feld wird nie mitgeschickt, egal was drinsteht. Welches und warum? Repariere es.
Kontrolle: Beim ersten Absenden stehen dort genau zwei Angaben.
Übungsaufgaben
Jetzt baust du Formulare für deine Projektseite. Die Aufgaben 3 bis 7 sind die Kernaufgaben, die Bonusaufgaben sind für alle, die schneller fertig sind. Prüfe jedes Formular, indem du es abschickst und die Adresszeile liest. Auswahllisten, mehrzeilige Textfelder und weitere Feldtypen kommen in Block 6.
Aufgabe 3 – Verschachtelung prüfen
Zeit: ca. 8 Minuten
Dieser Ausschnitt enthält drei Verschachtelungsfehler. Der Browser zeigt trotzdem etwas an, baut sich die Seite aber selbst zurecht.
<span>
<p>Unsere nächste Tour führt auf den Wendelstein.</p>
</span>
<p>
Treffpunkt:
<div>Parkplatz Bayrischzell</div>
</p>
<p>Ausrüstung: <strong>feste Schuhe, <em>Regenjacke</strong></em></p>
- Speichere den Ausschnitt in
verschachtelung.htmlund öffne die Entwicklerwerkzeuge (F12, Reiter „Elemente“). Wie hat der Browser den zweiten Absatz umgebaut? - Finde alle drei Fehler und repariere sie. Regeln: Inline-Elemente gehören in Block-Elemente, nicht umgekehrt. Ein
pdarf keine Block-Elemente enthalten. Was zuletzt geöffnet wurde, wird zuerst geschlossen. - Schreibe zu jedem Fehler einen kurzen HTML-Kommentar.
Aufgabe 4 – Ein Kontaktformular für die Projektseite
Zeit: ca. 12 Minuten
Deine Projektseite aus Block 3 und 4 bekommt eine Kontaktseite.
- Lege
kontakt.htmlmit dem gleichen Grundgerüst, Kopf- und Fußbereich wie deine anderen Seiten an und verlinke sie in der Navigation aller Seiten. - Baue ein Formular mit Textfeldern für Vorname, Nachname und Betreff. Jedes Feld bekommt ein
label, eine passendeidund einname-Attribut. - Ergänze die Frage „Antwort per“ mit zwei Radio-Buttons (E-Mail, Telefon), E-Mail ist vorausgewählt, und eine Checkbox „Ich habe die Datenschutzhinweise gelesen.“
- Schicke das Formular an
kontakt.htmlund prüfe in der Adresszeile, ob alle Angaben ankommen. Klicke auch auf die Beschriftungen: Springt der Cursor ins richtige Feld?
Tipp: Pack jedes Paar aus Beschriftung und Feld in ein eigenes p, dann steht jedes Feld in einer eigenen Zeile. Mit placeholder kannst du einen grauen Beispieltext ins Feld schreiben.
Aufgabe 5 – Die Umfrage
Zeit: ca. 10 Minuten
Auf einer neuen Seite umfrage.html sollen Besucher abstimmen.
- Frage „Dein Lieblingsziel“ mit vier Radio-Buttons: Bergsee, Gipfel, Berghütte, Klamm. Gipfel ist vorausgewählt. Es darf immer nur eins gewählt sein.
- Frage „Was nimmst du mit?“ mit drei Checkboxen: Brotzeit, Kamera, Regenjacke. Alle Checkboxen bekommen denselben
name. - Sage voraus und prüfe: Was steht in der Adresszeile, wenn du Klamm, Brotzeit und Regenjacke wählst?
- Gib einem Radio-Button testweise einen anderen
name. Was passiert? Mache es danach rückgängig.
Kontrolle: ?ziel=klamm&mitnehmen=brotzeit&mitnehmen=jacke
Aufgabe 6 – Fehlersuche im Formular
Zeit: ca. 8 Minuten
Dieses Anmeldeformular hat fünf Fehler. Manche sieht man sofort, andere erst nach dem Absenden in der Adresszeile.
<form action="anmeldung.html" method="get">
<label for="name">Name:</label>
<input type="text" id="vorname" name="name">
<label for="alter">Alter:</label>
<input type="text" id="alter">
<p>Tour:</p>
<input type="radio" id="leicht" name="tour" value="leicht">
<label for="leicht">leicht</label>
<input type="radio" id="schwer" name="strecke" value="schwer">
<label for="schwer">schwer</label>
<input type="checkbox" id="foto" name="foto">
<label for="foto">Fotos dürfen veröffentlicht werden</label>
<input type="submit">Anmelden</input>
</form>
- Speichere das Formular in
fehlersuche.html. Teste jedes Feld: Klick auf die Beschriftung, Auswahl, Absenden. - Finde die fünf Fehler und repariere sie.
- Schreibe zu jedem Fehler einen kurzen HTML-Kommentar.
Tipp: Ein Fehler steckt in der Checkbox. Was steht nach dem Absenden hinter foto=?
Aufgabe 7 – Anmeldung zur Wandertour
Zeit: ca. 10 Minuten
Der Wanderverein will Anmeldungen über seine Webseite annehmen. Diesmal planst du das Formular selbst. Anforderungen: Vorname und Nachname, Alter, eine von drei Touren (Bergsee, Gipfel, Klamm), freiwillige Extras (Leihstöcke, Lunchpaket) und eine Bestätigung „Ich bin schwindelfrei“.
- Baue das Formular in
anmeldung.html. Jedes Feld hat einlabel, eineidund einen sinnvollenname, jede Auswahl einenvalue. - Teste mit dem Namen „Jürgen Groß“. Wie sieht der Name in der Adresszeile aus? Vergleiche mit der Tabelle aus Block 4.
- Ordne das Formular so, dass jede Frage in einer eigenen Zeile beginnt. Welche Elemente brauchst du dafür, und welche nicht mehr?
Kontrolle: Jürgen erscheint als J%C3%BCrgen, Groß als Gro%C3%9F.
Bonusaufgabe 1 – Fachbegriffe im Fließtext
Inline-Elemente sind nicht nur span und a. Schreibe auf deiner Projektseite einen kurzen Absatz über das Wetter am Berg, in dem diese Inline-Elemente vorkommen:
- Eine Hochzahl wie in m³ mit
sup(m<sup>3</sup>) und eine chemische Formel wie H₂O mitsub(H<sub>2</sub>O). - Eine Abkürzung mit Erklärung beim Darüberfahren:
<abbr title="Deutscher Wetterdienst">DWD</abbr>. - Ein wichtiges Wort mit
strongund eine Betonung mitem. - Prüfe: Bleibt alles in einer Zeile? Begründe als Kommentar.
Bonusaufgabe 2 – Ein echtes Suchformular
Formulare können ihre Daten an fremde Seiten schicken. Die deutsche Wikipedia nimmt Suchbegriffe unter dem Namen search entgegen.
- Baue ein Formular mit
action="https://de.wikipedia.org/w/index.php",method="get", einem Textfeld mitname="search"und einem Absenden-Knopf „Auf Wikipedia suchen“. - Suche nach „Zugspitze“. Was steht in der Adresszeile?
- Ändere den
namedes Textfelds insuche. Funktioniert die Suche noch? Erkläre als Kommentar.
- Block-Elemente (
p,div,h1…) beginnen eine neue Zeile, Inline-Elemente (span,a,strong…) stehen im Textfluss. - Inline in Block, nicht umgekehrt. Kein
divin einemp. Zuletzt geöffnet, zuerst geschlossen. formumschließt ein Formular,inputist das Eingabefeld,label forgehört zuriddes Feldes.- Radio-Buttons: gleicher
name, eigenervalue. Checkboxen: beliebig viele Haken. - Mit
method="get"stehen die Daten alsname=Wert&…in der Adresszeile. Ohnenamewird nichts gesendet.
