HTML
Die Hypertext Markup Language (HTML) ist eine textbasierte Auszeichnungssprache zur Strukturierung von Webseiten (in diesem Zusammenhang als HTML-Dokumente bezeichnet). HTML basiert auf sog. Tags, welche als Text Bausteine mit den Zeichen <
bzw. >
definiert werden. HTML dient dabei nur der Strukturierung der Inhalte und legt keinerlei Formatierung fest.
HTML-Markup Regeln
Ein HTML-Element hat mehrere Bestandteile:
- Öffnendes Tag: Ein öffnendes Tag besteht aus den Klammersymbolen
<
und>
und dem eingeschlossenen Tag-Name (zB<p>
). - Schließendes Tag: Ähnlich zum öffnenden Tag besteht das schließende Tag aus den Klammersymbolen
<
und>
und dem eingeschlossenen Tag-Namen. Zusätzlich wird durch Angabe des Slash-Symbols (/
) das schließende Tag markiert (zB</p>
). - Inhalt: Der tatsächliche Inhalt des HTML-Elements kann entweder reiner Text oder weitere HTML-Elemente als Kindelemente sein.
- Attribute: HTML-Elemente können Attribute besitzen, welche zusätzliche Informationen zum HTML-Element liefern, welche nicht Teil des Inhalts sind. Attribute und zugehörige Attributwerte werden im öffnenden Tag angegeben. Das Attribut wird über
=
vom Attributwert getrennt und der Attributwert wird in"
gesetzt.
Beispiel für ein HTML-Element:
Öffnendes Tag Schließendes Tag ┌┴┐ ┌┴─┐ <p>Ein HTML Beispiel</p> └───────┬───────┘ Inhalt └──────────┬───────────┘ HTML-Element
Beispiel für ein HTML-Element mit Attribut:
Öffnendes Tag ┌─────────┴────────┐ <p class="my-class">Ein HTML Beispiel</p> └─┬─┘ └───┬────┘ Attribut Attributwert
Es gibt Ausnahmen, welche nicht den oben beschriebenen allgemeinen Regelungen folgen:
- Leere HTML-Elemente: Es gibt HTML-Elemente, welche keinen expiziten textlichen Inhalt besitzen. Beispiele dafür sind:
<br>
: Zeilenumbruch<hr>
: Horizontale Trennline<img>
: Bilder- Boolsche Attribute: Es gibt Attribute, welche keinerlei Attributwert benötigen. Eine Angabe des Attributes würde einen Attributwert
true
implizieren. Ein Beispiel für ein boolsches Attribut istdisabled
.
Besondere syntaktische Konstrukte
HTML-Kommentare
In den meisten Programmier- bzw. Auszeichnungssprachen gibt es Kommentare, welche vom Web-Browser zur Generierung der Anzeige ignoriert werden.
Kommentare werden mit der Symbolfolge <!--
gestartet und mit -->
beendet.
<!-- Ein Beispiel Kommentar -->
HTML-Entities
Es gibt unter anderem die Zeichen <
, >
, "
, &
welche Teil der HTML Syntax sind. Diese Zeichen müssen als spezielle HTML-Entity
angegeben werden.
Eine HTML-Entity wird über ein &
gestaret und mit einem ;
abgeschlossen. Dazwischen befindet sich ein Entitiy Bezeichner.
Beispiele für HTML-Entities:
Zeichen | HTML-Entity |
---|---|
< |
< |
> |
> |
" |
" |
& |
& |
Whitespace
Als Whitespace werden jegliche Leerräume, Tabulatoren und Zeilenumbrüche bezeichnet. Für die Darstellung von HTML hat Whitespace keine Bedeutung. Der Web-Browser ignoriert Whitespace generell und reduziert Whitespace zwischen 2 Wörtern auf genau einen Leerraum.
Die beiden Paragraphen im folgenden Beispiel resultieren in der selben Anzeige:
<p>Beispiel für Whitespace</p> <p>Beispiel für Whitespace.</p>
Aufbau eines HTML-Dokuments
HTML-Dokumente haben einen definierten Aufbau:
- Ein HTML-Dokument startet mit einem
Doctype
, welcher die Version von HTML angibt (hier: HTML 5). Dem Web-Browser wird damit mitgeteilt, welche HTML-Version zu verarbeiten ist. - Ein HTML-Dokument hat
html
als Wurzelelement und 2 Kindelementehead
undbody
- Im
head
befinden sich sog. Metadaten zum Dokument (zumindest der Titel, angegeben durch dastitle
Element) - Im
body
befinden sich alle Inhalte, welche im Web-Browser dargestellt werden
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Meine Seite</title> </head> <body> <!-- HTML Elemente --> </body> </html>
Flow Layout
Das Default-Layout in HTML ist das sog. "Flow Layout", welches auch als "Normales Layout" bezeichnet wird. In HTML sind generell 2 Arten von Elementen definiert. Das sind einerseits Inline-Elemente
und andererseits Block-Elemente
:
Block-Elemente
: HTML-Elemente werden von oben nach unten aufeinander gestapelt.div
ist das generische Block-Element.Inline-Elemente
: HTML-Elemente werden entlang des Textflusses nebeneinander gesetzt.span
ist das generische Inline-Element.
Die HTML-Elemente werden zur Darstellung vom Web-Browser in der Reihenfolge angezeigt wie sie im HTML-Dokument angegeben wurden. Zu beachten ist dabei die Textrichtung, welche unter anderem von der Sprache des HTML-Dokumentes festgelegt wird.
Die Textrichtung kann von Links nach Rechts (
ltr
) oder von Rechts nach Links (rtl
) angegeben sein. Mit dem HTML-Attributdir
kann global auf demhtml-Tag
die Textrichtung geändert werden (Default istltr
). Für Sprache wie zB Arabisch oder Hebräisch wirdrtl
genutzt.
Beispiele für Block-Elemente sind: h1-h6
, p
, table
, ul
und div
. Beispiele für Inline-Elemente sind: strong
, em
, img
, a
, input
und span
.
Wichtige HTML-Elemente
Überschriften
Überschriften werden über die Tags h1-h6
angegeben. Die Zahlen 1-6 spezifizieren dabei die Hierarchieebene.
Beispiel für Überschriften:
<h1>Überschrift Ebene 1</h1> <h2>Überschrift Ebene 2</h2> <h3>Überschrift Ebene 3</h3> <h4>Überschrift Ebene 4</h4> <h5>Überschrift Ebene 5</h5> <h6>Überschrift Ebene 6</h6>
Textauszeichnung
Um Textstellen gesondert hervorzuheben können die Tags strong
oder em
verwendet werden.
Beispiel für Hervorhebungen:
Das ist ein <strong>wichtiger</strong> Textabschnitt und dies ist ein <em>hervorgehobener</em> Textabschnitt.
Paragraphen
Zusammenhängende Textabschnitte werden als Paragraphen über das p-Tag
angegeben.
Beispiel für 2 Paragraphen:
<p>Ein erster Paragraph</p> <p>Ein zweiter Paragraph</p>
Geordnete oder ungeordnete Listen
Listen können über die Tags ul
(ungeordnet) oder ol
(geordnet) angegeben werden. Mit li-Tags
werden Listeneinträge angegeben. Listeneinträge müssen dabei immer als Kindelemente von li
oder ol
angegeben werden.
Beispiel für eine ungeordnete Liste:
<ul> <li>Eintrag 1</li> <li>Eintrag 2</li> <li>Eintrag 3</li> </ul>
Beispiel für eine geordnete Liste:
<ol> <li>Eintrag 1</li> <li>Eintrag 2</li> <li>Eintrag 3</li> </ol>
Hyperlinks
Hyperlinks spielen eine besondere Rolle in HTML da sie die Grundlage für den sog. Hypertext darstellen. Sie liefern die Möglichkeit unterschiedliche Webseiten miteinander zu verknüpfen. Hyperlinks werden über das a-Tag
realisiert (a gilt dabei als Abkürzung für Anchor). Wichtige Attribute von Hyperlinks sind href
und target
:
- Über
href
wird eine URL angegeben, welche das Ziel des Hyperlinks definiert. - Über
target
wird angegeben wie das Hyperlink im Web-Browser geöffnet werden soll. Zum Beispiel wird mit der Angabe_blank
ein neues Browserfenster oder ein neuer Tab (je nach Interpretation des Web-Browsers) geöffnet.
Beispiel für ein Hyperlink:
<a target="_blank" href="https://www.fh-kufstein.ac.at">Link</a>
Bilder
Um Bilder in einer Webseite einzufügen wird das img-Tag
genutzt. Das Tag stellt das Attribut src
bereit um eine URL auf ein Bild anzugeben. Mit dem Attribut alt
wird die Möglichkeit bereitgestellt eine textliche Beschreibung des Bildinhalts zu geben. Dies kann zum Beispiel für Suchmaschinenoptimierung oder aber auch aus Gründen der Accessibility genutzt werden.
Beispiel für ein Bild:
<img src="images/dinosaur.jpg" alt="Kopf und Toros eines Dinosaurierskelet">
Tabellen
Zur Darstellung von tabellarischen Daten werden Tabellen benutzt. Tabellen sollen in keinem Fall dazu verwendet werden um Layouts zu erzeugen.
Über das table-Tag
kann eine Tabelle definiert werden. Zeilen in einer Tabelle werden über das tr-Tag
erzeugt. Innerhalb der Zeilen können Zellen definiert werden mit td-Tags
(td für Tabledata). Für die Kopfzeile können Zellen mittels th-Tags
(th für Tablehead) definiert werden.
<table> <tr> <th>Band</th> <th>Album</th> <th>Veröffentlichungsjahr</th> </tr> <tr> <td>U2</td> <td>Boy</td> <td>1980</td> </tr> <tr> <td>Radiohead</td> <td>OK Computer</td> <td>1997</td> </tr> <tr> <td>The Mars Volta</td> <td>De-Loused in the Comatorium</td> <td>2003</td> </tr> </table>
In manchen Fällen ist es nötig Zellen in einer Tabelle über mehrere Spalten oder Zeilen zu verteilen. Mit den Attributen colspan
bzw. rowspan
kann für eine Zelle definiert werden über wieviele Spalten bzw. Zeilen diese verteilt werden soll.
Formulare
Formulare werden genutzt um Benutzereingaben zu ermöglichen. Die eingegebenen Daten können direkt an einen Web-Server gesendet werden oder auch lokal verarbeitet werden.
Jedes Formular wird über ein form-Tag
umgeben. Innerhalb eines Formular befinden sich Formularfelder. Gängige Formularfelder sind ein- oder mehrzeilige Textfelder, Auswahlfelder, Radio-Buttons oder Datumsfelder.
Einzelne Formularfelder können über das Tag fieldset
gruppiert werden. Ein Fieldset kann über das legend-Tag
eine entsprechende Beschriftung bekommen. Beschriftungen für einzelne Formularfelder können ebenfalls mit dem Tag label
durchgeführt werden. Das label-Tag
stellt das Attribut for
bereit mit dem das Attribut id
eines entsprechenden Formularfeldes referenziert wird.
Beispiel eines HTML-Formulars mit Text, Datums und Radio-Button Eingaben:
<form> <p> <label for="input-name">Name</label> <input type="text" placeholder="Name" id="input-name" name="name"> </p> <p> <label for="input-birthday">Geburtstag</label> <input type="date" placeholder="Geburtstag" id="input-birthday" name="birthday"> </p> <fieldset> <legend>Priorität</legend> <p> <label for="input-priority-1"> <input id="input-priority-1" type="radio" name="priority" value="1"> Hoch </label> </p> <p> <label for="input-priority-2"> <input id="input-priority-2" type="radio" name="priority" value="2"> Mittel </label> </p> <p> <label for="input-priority-3"> <input id="input-priority-3" type="radio" name="priority" value="3"> Niedrig </label> </p> </fieldset> <label> </form>
Strukturierung eines HTML-Dokuments
Im Beispiel wird ein typischer Aufbau einer Webseite skizziert. HTML stellt Elemente bereit, welche eine spezifische Bedeutung für den Inhalt implizieren. Diese Elemente sollen zur Strukturierung verwendet werden, sodass das HTML-Markup Bedeutung erhält. Für Web-Crawler oder Assistenztechnologien (zB Braille-Browser, Screenreader) kann die Webseite somit besser interpretiert werden.
Folgend sollen die wichtigsten Struktur-Elemente kurz beschrieben werden:
<main>
: Dieses Tag sollte nur einmal pro Webseite verwendet werden und soll als Wrapper für den Hauptinhalt der Webseite fungieren.<article>
: Schließt einen zusammenhängenden Inhalt ein, welcher für sich stehen kann.<section>
: Gruppierungselement um einen zusammenhängenden Teil einer Webseite zusammenzufassen.<aside>
: Nicht direkt mit dem<main>
Inhalt verknüpfte Inhalte. Zum Beispiel für wiederkehrende Inhalte auf mehreren Webseiten.<nav>
: Enthält die Hauptnavigation der Website.<header>
: Stellt einleitenden Inhalt dar.<footer>
: Stellt abschließenden Inhalt dar.
Validität von HTML
Um eine korrekte Interpretation des HTML-Dokumentes zu gewährleisten, muss sichergestellt werden, dass keinerlei syntaktische Fehler im HTML-Markup vorherrschen. HTML-Validatoren können genutzt werden um ein HTML-Dokument automatisiert auf syntaktische Fehler zu prüfen.
Das W3C stellt einen standardkonformen HTML-Validator zur Verfügung (https://validator.w3.org). Dieser Validator unterscheidet zwischen Fehlern (Error) und Warnungen (Warning):
- Fehler sollten immer behoben werden, da dies ein konkretes syntaktisches Problem bezeichnet.
- Warnung können behoben werden, diese sind vorranging für Barrierefreiheit und Suchmaschinen vorteilhaft.