image: liste.webp kind: reference

HTML: Inhalt und Struktur

Mit HTML beschreibst du, was auf einer Webseite oder einer Folie steht: Überschriften, Absätze, Listen, Links und Bilder. Wie es aussieht, regelt CSS. Such dir die Stelle heraus, die du gerade brauchst.

Alles auf dieser Seite gilt für Webseiten und für Folien mit Shower gleichermaßen. Auf einer Webseite steht der Code im <body> deiner Datei index.html, auf einer Folie zwischen <section class="slide"> und </section>. Jedes Beispiel zeigt rechts, wie es aussieht; mit dem Knopf in der Ecke des Bildes siehst du es als Folie statt als Webseite.

1. Tags

HTML-Code besteht aus Tags. Ein Tag steht in spitzen Klammern und sagt, was für ein Stück Inhalt folgt. Die meisten Tags gibt es paarweise: Das öffnende Tag beginnt etwas, das schließende Tag mit / beendet es.

<h1>Axolotl</h1>
<p>Axolotl leben ihr ganzes Leben im Wasser.</p>

  • <h1> beginnt eine Überschrift, </h1> beendet sie.
  • <p> beginnt einen Absatz (»paragraph«), </p> beendet ihn.

Was zwischen den beiden Tags steht, ist der Inhalt des Elements. Elemente können andere Elemente enthalten. Rücke den Inhalt dann ein, damit du siehst, was wozu gehört:

<ul>
    <li>Ein Punkt</li>
    <li>Noch ein Punkt</li>
</ul>

Für den Browser sind die Leerzeichen am Zeilenanfang egal, für dich nicht. Mit Tab und ShiftTab rückst du markierte Zeilen ein und aus; StrgShiftI (»Format Document«) räumt die ganze Datei auf.

Fehlt ein schließendes Tag, zeigt der Browser trotzdem etwas an, aber oft an einer ganz anderen Stelle falsch: Plötzlich ist der Rest der Seite fett, oder auf einer Präsentation fehlen mehrere Folien. Sieht etwas merkwürdig aus, prüfe zuerst, ob jedes Tag geschlossen ist, und zwar in umgekehrter Reihenfolge, wie es geöffnet wurde.

2. Das Grundgerüst einer Seite

Jede Webseite hat dasselbe Gerüst. Der sichtbare Inhalt steht im <body>, alles im <head> beschreibt die Seite selbst:

<!DOCTYPE html>
<html lang="de">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Axolotl</title>
</head>
<body>
    <h1>Axolotl</h1>
    <p>Axolotl leben ihr ganzes Leben im Wasser.</p>
</body>
</html>

  • <!DOCTYPE html> sagt dem Browser: Das ist eine moderne HTML-Seite.
  • lang="de" nennt die Sprache. Damit trennt der Browser Wörter richtig, und eine Vorlesesoftware spricht deutsch.
  • <meta charset="UTF-8"> sorgt dafür, dass Umlaute und Emojis richtig erscheinen.
  • Die Zeile mit viewport sagt Handys, dass sie die Seite in ihrer echten Breite zeigen sollen.
  • Der <title> steht im Browser-Tab, nicht auf der Seite.
In der Shower-Vorlage ist dieses Gerüst schon fertig. Deine Folien stehen im <body>, jede in ihrer eigenen <section class="slide">.

3. Überschriften und Absätze

Es gibt sechs Stufen von Überschriften, <h1> bis <h6>; meistens brauchst du nur die ersten drei. Eine Webseite hat genau eine <h1> für ihr Thema und <h2> für ihre Abschnitte. Auf einer Folie ist die <h2> die Überschrift der Folie.

<h2>Warum HTML?</h2>
<p>HTML beschreibt den Inhalt einer Seite.</p>
<p>CSS legt fest, wie dieser Inhalt aussieht.</p>

Zwischen zwei Absätzen entsteht von selbst etwas Abstand. Leere Zeilen im Code oder leere Absätze wie <p></p> machen keinen zusätzlichen Abstand; Abstände gestaltest du mit CSS (margin).

Eine Überschrift sollte sagen, worum es geht. Besser als ein einzelnes Wort ist oft eine kleine Aussage:

Nicht so gut:

<h2>HTML</h2>

Besser:

<h2>HTML beschreibt die Struktur</h2>

Eine neue Zeile ohne neuen Absatz

Manchmal soll innerhalb eines Absatzes eine neue Zeile beginnen, zum Beispiel bei einer Adresse. Dafür gibt es <br>, ohne schließendes Tag:

<p>
    Max Mustermann<br>
    Klasse 9b<br>
    Informatik
</p>

<br> bricht nur die Zeile um; der Abstand zwischen Absätzen entsteht nicht. Brauchst du einen neuen Gedanken, nimm einen neuen Absatz.

4. Listen

Listen machen Inhalte übersichtlich. Es gibt zwei Arten:

  • <ul> (»unordered list«) für Stichpunkte,
  • <ol> (»ordered list«) für eine nummerierte Liste, wenn die Reihenfolge zählt.

Jeder einzelne Punkt steht in einem eigenen <li> (»list item«):

<h2>Meine Projektidee</h2>
<ul>
    <li>🎮 Ein kleines Spiel programmieren</li>
    <li>🧭 Eine Spielfigur bewegen</li>
    <li>💎 Punkte sammeln</li>
</ul>

Bei <ol> setzt der Browser die Nummern selbst davor. Schreib sie also nicht in den Text, sonst stimmen sie nicht mehr, sobald du einen Punkt einfügst:

<ol>
    <li>Repository klonen</li>
    <li>index.html öffnen</li>
    <li>Vorschau starten</li>
</ol>

Jedes <li> gehört zwischen <ul> und </ul> (oder <ol> und </ol>). Stehen die Punkte außerhalb, versucht der Browser trotzdem etwas daraus zu machen, aber Abstände und Einrückung stimmen dann nicht mehr.

5. Wörter hervorheben

Manche Tags stehen mitten im Text und verändern nur ein paar Wörter:

<p>Speichere mit <strong>Strg + S</strong>, bevor du die Vorschau prüfst.</p>
<p>Verwende Farben <em>sparsam</em>.</p>
<p>Die Folien stehen in <code>index.html</code>.</p>
<p>Fläche: A = a<sup>2</sup>, Wasser: H<sub>2</sub>O</p>

  • <strong> markiert etwas Wichtiges (meist fett).
  • <em> betont ein Wort (meist kursiv).
  • <code> markiert Code, Dateinamen und Befehle.
  • <sup> stellt Text hoch, <sub> tief.

Wenn alles hervorgehoben ist, fällt nichts mehr auf. Und auch diese Tags brauchen ihr schließendes Tag: Fehlt </strong>, ist der ganze Rest fett.

Spitze Klammern im Text

Willst du ein Tag im Text zeigen, statt es zu benutzen, schreibst du die spitzen Klammern anders: &lt; für < und &gt; für >.

<p>Eine Folie beginnt mit <code>&lt;section class="slide"&gt;</code>.</p>

Ohne diese Umschreibung würde der Browser wirklich eine neue Folie beginnen.

6. Links

Das H in HTML steht für Hypertext: Seiten können auf andere Seiten verweisen. Ein Link ist ein <a>-Element; im Attribut href steht, wohin er führt:

<p>
    <a href="https://de.wikipedia.org/wiki/Axolotl">Mehr über Axolotl</a>
</p>
<p>
    Weiter zu <a href="zweite-seite.html">meiner zweiten Seite</a>.
</p>

  • Eine Adresse mit https:// führt zu einer anderen Webseite.
  • Ein Dateiname wie zweite-seite.html führt zu einer Datei im selben Ordner. Das nennt man einen relativen Pfad.

Ein Attribut wie href steht immer im öffnenden Tag, in der Form name="wert", mit Anführungszeichen.

7. Bilddateien ins Projekt holen

Bevor ein Bild auf der Seite erscheinen kann, muss die Bilddatei in deinem Projekt liegen. In der Shower-Vorlage gibt es dafür den Ordner pictures; bei einer eigenen Webseite legst du Bilder neben index.html oder in einen eigenen Ordner wie bilder.

Der Explorer von VS Code mit dem Ordner pictures und darin einigen Bilddateien.

Verwende einfache Dateinamen: kleine Buchstaben, keine Leerzeichen, keine Umlaute, keine Sonderzeichen.

Gut:

fuji.jpg

Auch gut:

mount-fuji.webp

Eher schlecht:

Fuji Bild NEU!!!.JPG

Bildformate

Format Gut für Endung
JPEG Fotos; kleine Dateien .jpg, .jpeg
PNG Grafiken, Screenshots, durchsichtiger Hintergrund .png
WebP Fotos und Grafiken; meist kleiner als JPEG und PNG .webp
SVG Logos und Symbole; scharf in jeder Größe .svg
GIF einfache Animationen .gif
Das Format steht in der Datei selbst, nicht im Namen. Benennst du bild.png in bild.webp um, bleibt es ein PNG, nur mit falschem Namen. Umwandeln kannst du es weiter unten.

Möglichkeit 1: Drag & Drop

Liegt das Bild auf deinem Computer, ziehe es aus deinem Dateimanager in den Explorer von VS Code und lege es im richtigen Ordner ab:

Eine Bilddatei wird aus dem Dateimanager in den Ordner pictures im Explorer gezogen.

Möglichkeit 2: Aus der Zwischenablage

Ein Bild im Browser kopierst du mit einem Rechtsklick und »Bild kopieren« (»Copy Image«):

Das Kontextmenü eines Bildes im Browser mit dem Eintrag »Copy Image«.

Klicke dann im Explorer auf eine Datei im Zielordner und drücke StrgV. Je nach Browser musst du das Einfügen bestätigen:

Der Browser fragt, ob VS Code auf die Zwischenablage zugreifen darf.

Die neue Datei heißt meist image.png:

Im Explorer ist die Datei image.png erschienen; die Vorschau nennt unten Auflösung und Dateigröße.

Unten stehen zwei wichtige Angaben: die Auflösung (hier 1280 × 1013 Pixel; zu kleine Bilder werden unscharf) und die Dateigröße (hier 1,92 MB; das ist für ein einzelnes Bild viel). Gib der Datei einen sinnvollen Namen und behalte die Endung:

Im Explorer wird image.png umbenannt.
Die Datei heißt jetzt classroom.png.
Prüfe bei fremden Bildern, ob du sie verwenden darfst. Auf Wikimedia Commons stehen bei jedem Bild Urheber und Lizenz; den Bildnachweis schreibst du dann unter das Bild. Durchs Kopieren ändert sich an der Lizenz nichts.

Bilder verkleinern: WebP

Bilder aus der Zwischenablage werden als PNG gespeichert, und Fotos sind als PNG unnötig groß. Die Erweiterung »WebP Converter for VSCode« wandelt sie um: installieren, dann Rechtsklick auf die Datei und »Convert to WebP«:

Die Erweiterung WebP Converter for VSCode in der Erweiterungsansicht.
Das Kontextmenü einer Bilddatei mit »Convert to WebP«.

»Lossless« behält jedes Pixel und eignet sich für Grafiken und Screenshots. »Lossy« verliert ein wenig Qualität und macht Fotos viel kleiner; 85 % sieht man kaum:

Die Auswahl zwischen Lossless und Lossy mit einer Qualität von 85 Prozent.

Die neue Datei classroom.webp ist nur noch 180 kB groß und sieht unverändert aus.

Aus 1,92 MB sind 180 kB geworden.

8. Bilder einfügen

Liegt die Bilddatei im Projekt, fügst du sie mit <img> ein:

<h2>Der Fuji</h2>
<img src="pictures/fuji.jpg" alt="Der Fuji vom Shōji-See aus gesehen" style="height: 300px;">

  • src (»source«) sagt, wo die Datei liegt: hier im Ordner pictures, relativ zur HTML-Datei.
  • alt beschreibt, was das Bild zeigt (mehr dazu gleich).
  • style="height: 300px;" macht das Bild 300 Pixel hoch; ohne das wäre es so groß wie die Datei. Mehr dazu unter Bildgröße.

<img> hat keinen Inhalt und deshalb kein schließendes Tag.

Der Pfad muss genau stimmen

Erscheint ein Bild nicht, liegt es fast immer am Pfad:

  • Stimmt der Dateiname, mit Groß- und Kleinschreibung? Fuji.JPG ist nicht fuji.jpg. Auf deinem Rechner geht es vielleicht trotzdem, auf dem Webserver nicht.
  • Stimmt die Endung (.jpg, .jpeg, .png, .webp)?
  • Steht der Ordner im Pfad, wenn das Bild in einem Ordner liegt?

Richtig:

<img src="pictures/fuji.jpg" alt="Der Fuji">

Falsch:

<img src="Fuji.jpg" alt="Der Fuji">
Statt eines Dateinamens kann in src auch die Adresse eines Bildes im Internet stehen (»Hotlinking«). Das ist praktisch zum Ausprobieren, aber das Bild verschwindet, wenn die fremde Seite es löscht, und ohne Internet fehlt es ganz. Für deine fertige Seite oder Präsentation gehört das Bild in deinen eigenen Ordner.

Was in den Alt-Text gehört

Den Alt-Text liest ein Screenreader Menschen vor, die das Bild nicht sehen, und der Browser zeigt ihn, wenn das Bild fehlt. Er sagt kurz, was das Bild zusätzlich zum Text vermittelt:

Gut:

alt="Ein rosa Axolotl in einem Aquarium"

Nicht hilfreich:

alt="Bild"

Schreib nicht »Bild von …«: Dass es ein Bild ist, weiß der Screenreader schon. Ist ein Bild nur Schmuck, ist ein leerer Alt-Text richtig: alt="".

9. Bereiche: div

Manchmal sollen mehrere Elemente zusammengehören, etwa eine Überschrift und eine Liste, die gemeinsam neben einem Bild stehen, oder ein Kasten mit Hintergrundfarbe. Dafür gibt es <div>: einen Bereich ohne eigene Bedeutung, nur zum Zusammenfassen.

<div class="kasten">
    <h3>Merke</h3>
    <p>Ein div fasst Elemente zusammen.</p>
</div>

Ohne CSS sieht man von einem <div> nichts. Erst mit einer Klasse und einer Regel wird es zum Kasten, zur Spalte oder zur Infokarte; wie das geht, steht unter CSS und Layout.

Für die großen Teile einer Webseite gibt es Bereiche mit Bedeutung: <header> für den Kopf, <main> für den Hauptinhalt, <section> für einen Abschnitt, <footer> für den Fuß. Sie verhalten sich wie <div>, sagen aber, was sie sind. In Shower ist jede Folie eine <section>.