Websites müssen funktional sein und optisch überzeugen. Wie sie unter der Haube aussehen, kümmert den Besucher einer Website wenig. Hier hat der Webentwickler sein Reich und nutzt die ihm zur Verfügung stehenden HTML-Elemente. Ob ein `h1`, `span`, `div` oder `p`, schnell lässt sich eine Seite als Dokument beschreiben. Aber eben nur als Dokument. Was fehlt, sind semantische Möglichkeiten zur Strukturierung. Das folgende Beispiel soll das verdeutlichen:
<div>
<h1>Meine Webseite</h1>
</div>
<div>
<ul>
<li><a href="#">Home</a></li>
<li><a href="#">Blog</a></li>
<li><a href="#">About</a></li>
</ul>
</div>
<div>
<ul>
<li><a href="#">Archive</a></li>
<li><a href="#">Search</a></li>
</ul>
</div>
<div>
<h2>Ein neuer Post</h2>
<div>...</div>
</div>
<div>
<span>© 2012 by Max Mustermann</span>
</div>
So könnte ein Weblog aussehen. Es gibt eine Seitenüberschrift, Navigation, Inhalt und eine Fußnote. Mittels CSS lassen sich diese Bereiche auch visuell anpassen und positionieren. Doch woran erkennt man letztlich, welches `div` welchen Bereich darstellt? Im Webdesign bedient man sich hierzu CSS-Klassen.
<div class="header">
<h1>Meine Webseite</h1>
</div>
Die CSS-Klasse `header` dient hier als semantische Hilfe. Der Kopfbereich der Webseite wird damit deklariert. Letztlich bleibt es dem Webentwickler überlassen, wie er seine Bereiche inhaltlich unterscheidet. CSS-Klassen sind eine der Möglichkeiten, die dafür zur Verfügung stehen.
Semantik pur
Und genau hier kommen die neuen semantischen HTML5-Elemente ins Spiel. Wo Webentwickler sich bisher selbst gewisse Konventionen für Semantik setzen mussten, kann man nun auf fertige semantische Elemente wie `article`, `section`, etc... zurückgreifen. Am besten lassen sich die semantischen Elemente anhand eines Webseiten-Designs erklären. Für ein Webseiten-Design braucht man einen Anwendungsfall, hier dient ein einfaches Blog-Layout als Beispiel.
Layout der Beispiel Seite
Ein typisches Blog-Design soll es werden. Oben eine Kopfzeile mit Navigation und Beschreibung der Seite, darunter der eigentliche Inhalt, rechts davon zusätzliche Informationen und unten schließlich die Fußzeile für Impressum und ähnliches. Hier die semantische Struktur:
Hallo Blog, welches Blog?
Beim Gestalten des Blog geht es im ersten Schritt um die Kopfzeile. Der Besucher soll erkennen, wo er sich befindet. Welche Webseite ist das, wo in der Webseite bin ich und welche wichtigen Bereiche, die ich direkt ansteuern kann, gibt es auf der Webseite? Um das entsprechend umzusetzen, bedient man sich drei neuer Tags: <header>, <hgroup> und <nav>.
Mit dem <header> Tag definiert man semantisch die Überschrift des momentanen Kontextes. Der Kontext ist in diesem Fall der <body> und damit die gesamte Webseite. Das <header> Element kann mehrfach in der Webseite vorkommen, in unterschiedlichen Kontexten. Zum Beispiel in einem Post oder in einem Artikel. Das <hgroup> Element gruppiert Header Tags, also <h1>,<h2>,<h3>. Da wir die Webseite mit zwei Header-Elementen beschreiben, verwenden wir das <hgroup> Tag, um diese Headings semantisch zu gruppieren. Schließlich fehlt noch die Navigation. Diese wandert auch in das <header> Tag und wird aus einer unsortierten Liste bestehen. Hier die Grafik zum Vorgehen:
Das Resultiert in folgenden HTML Code:
<!doctype html>
<html>
<body>
<header>
<hgroup>
<h1>Mein Blog</h1>
<h2>Zeugs das ich los werden muss</h2>
</hgroup>
<nav>
<ul>
<li><a href="#">Home</a></li>
<li><a href="#">Archive</a></li>
<li><a href="#">About Me</a></li>
<li><a href="#">Kontakt</a></li>
</ul>
</nav>
</header>
</body>
</html>
Artikel braucht ein Blog
Auch für den Hauptinhalt der Seite gibt es neue Tags, allen voran <article>. Ein <article> Element enthält die eigentlichen Informationsinhalte und beinhaltet in unserem Beispiel auch ein <header>- und ein <footer>- Tag. Im <header> landet die Überschrift des Inhalts sowie Informationen zum Autor und das Publizierungsdatum. Im <footer> gibt es zusätzliche Navigationselemente für Social-Bookmarking, die in einem <nav> Element hinterlegt sind. Damit sieht die Umgestaltung des Inhaltsblocks grafisch so aus:
Das <section>-Element definiert den gesamten Bereich als zusammenhängendes semantisches Konstrukt. Möchte man zum Beispiel Seiten komplett umgestalten, so kann man diese komplette Sektion weiterverwenden und an ein anderes DOM-Element hängen. Die Sektion kann mehrere <article> beherbergen und ist der Hauptbereich der Webseite. Erweitern wir die Seite um folgenden HTML Code:
<section id="content">
<article>
<header>
<h2>HTML5 Tutorial</h2>
</header>
<div>
Bla bla bla
</div>
<footer>
<nav>
<ul>
<li><a href="#">Tweet this</a></li>
<li><a href="#">Email this</a></li>
</ul>
</nav>
</footer>
</article>
</section>
Seitenwind
Das Blog soll auch eine Sidebar erhalten. Hier könnte man das neue <aside>-Element verwenden. Liest man allerdings die Definition des Tags kommen Zweifel auf:
The aside element represents a section of a page that consists of content that is tangentially related to the content around the aside element, and which could be considered separate from that content. Such sections are often represented as sidebars in printed typography.
Die Sidebar wäre immer sichtbar, bei jedem Artikel, ein <aside> Element sollte laut Definition zum jeweiligen Inhalt einen gewissen Bezug haben. Wenn man dynamische Webseiten erstellen kann, wäre es denkbar, die Sidebar immer relevant zum angezeigten Inhalt anzupassen.
Für das Beispiel Blog nehmen wir stattdessen eine Sektion. <aside> kann dann womöglich direkt im Artikel zum Einsatz kommen.
<section id="sidebar">
<article>
<header>
<h2>@writeline auf Twitter</h2>
</header>
<div>Tweets...</div>
</article>
<nav>
<ul>
<li><a href="#">Follow me on Twitter</a></li>
<li><a href="#">Archiv</a></li>
<li><a href="#">Search</a></li>
</ul>
</nav>
</section>
Ein guter Abschluß!
Fehlt nur noch die Fußzeile. Copyright und Impressum sollen dort eingebaut werden. Das <footer>-Element haben wir schon beim Artikel verwendet, im Kontext von <body> ist es die Fußzeile der Webseite.
<footer>
<ul>
<li>© 2012 by Max Mustermann</li>
<li><a href="#">Impressum</a></li>
</ul>
</footer>
Das angedachte Layout ist nun in HTML5 semantisch abgebildet und kann in der Folge mit CSS visuell verfeinert werden.
Wer an der gesamten Beispielanwendung interessiert ist, findet diese im Tutorial Eine HTML5 Webseite mit WebMatrix erstellen.
Kan Nie Verstaan
Da war doch was? Richtig! Was der Browser nicht kennt, ignoriert er einfach. So auch die neuen semantischen Elemente, falls man keinen modernen Webbrowser wie zum Beispiel den Internet Explorer benutzt. Hier kann eine Bibliothek wie der Modernizr helfen. Er erlaubt es, sogenannte Polyfills auf älteren Browsern zu aktivieren, die fehlende HTML5-Funktionalität nachbauen. Das funktioniert erstaunlich gut.
Fazit
Durch die neuen HTML5-Elemente können Webseiten nun semantisch besser aufbereitet werden und erlauben es nicht nur Menschen besser zu verstehen, welche Bereiche welche Bedeutung haben. Zukünftige Browser oder auch Betriebssysteme könnten die Seite grafisch anders aufbereiten. Navigationselemente müssten nicht zwangsläufig nur auf der Webseite bleiben, diese könnten auch direkt nativ im Dock des Betriebssystems angezeigt werden. Die Möglichkeiten sind groß – wichtig ist es einen Anfang zu machen.
Weiterführende Links:














von maryisdead 20.02.2012 (10:17Uhr) 1.
Doch woran erkennt man letztlich, welches `div` welchen Bereich darstellt? Im Webdesign bedient man sich hierzu CSS-Klassen.
Na, das halte ich aber für sehr kurzsichtig. Gibt's keine IDs mehr?
von robbz 20.02.2012 (10:23Uhr) 2.
Danke für diesen guten Artikel zum Thema HTML5. Aber da es ein sponsored Post ist hab ich natürlich geschaut, wer den wieso geschrieben hat. Und da bin ich auf WebMatrix gestoßen, dass zunächst auch interessant klingt.
Aber da scheint wohl einiges noch nicht zu funktionieren, wie man hier lesen kann: http://www.webdesignidee.de/webmatrix/
@maryisdead: Man muss nicht alles mögliche erwähnen, was man machen KÖNNTE. Wir wissen alle, dass man auch IDs verwenden kann. Deshalb reicht es hier doch völlig aus auf Klassen zu verweisen.
von demipress via facebook 20.02.2012 (10:38Uhr) 3.
Danke.
von hansimglueck 20.02.2012 (11:00Uhr) 4.
Ich verstehe immer noch nicht, warum man einen nicht-fertigen Standard jetzt schon verwenden sollte. Derzeit hat er kaum Vorteile und muss mit Scripten angepasst werden, für die vielen Browser, die die Sprache nicht verstehen.
von Philipp Koch via facebook 20.02.2012 (11:01Uhr) 5.
http://i.imgur.com/2Kq6Y.jpg
von Thomas Quensen 20.02.2012 (13:59Uhr) 6.
Nettes Tutorial.
Eine Anmerkung dazu: sowohl section als auch article sind "sectioning context" - leiten also einen neuen (unter)bereich ein. ein article als einziges Unterelement direkt in einer section ist daher überflüssig und semantisch auch nicht ganz korrekt. einfach nur ein article reicht völlig aus.
Zu der sidebar und aside: es stimmt, dass sich ein aside-element auf den direkten Kontext beziehen soll. Wenn das aside-Element allerdings außerhalb eines jeden articles steht bezieht es sich nicht auf "Hauptinhalt" der Seite, sondern auf die Gesamte Seite an sich. Ein aside innerhalb eines article-Elements sollte sich allerdings auf genau diesen Artikel beziehen.
Je nachdem, wo im Quelltext die Sidebar platziert worden wäre, kann aside durchaus dir richtige Wahl sein, vor allem da dieses Element die semantische Bedeutung von "nebensächlicher Content, nicht so wichtig" mitbringt - im Gegensatz zu section oder article
Weitere Infos dazu:
http://html5doctor.com/aside-revisited/
von jswebschmiede 20.02.2012 (14:45Uhr) 7.
hallo,
schöne Zusammenfassung der Semantik. Wirklich nutzbar. Danke
von Marcel 20.02.2012 (17:16Uhr) 8.
"falls man keinen modernen Webbrowser wie zum Beispiel den Internet Explorer benutzt"
IMHO ein Widerspruch in sich...
von THO 20.02.2012 (17:29Uhr) 9.
Und jetzt noch ein richtiger Artikel dazu, dann wäre alles perfekt! Aber schon alleine mal danke dafür!
von Tim Kraut 21.02.2012 (19:52Uhr) 10.
Irgendwie doch traurig, dass man im Artikel ausschließlich auf zwei eigene, nicht unbedingt überzeugende, Produkte im Webbereich verweist... (wenn man von Modernizer absieht - aber da hat man ja nichts vergleich- und verweisbares in Petto). Schade... ich dachte, man hätte es endlich kapiert bei Microsoft...
Das mag zwar ein Sponsored Post sein und der Inhalt passt auch zu einer Webseite wie T3N.de, aber nichtsdestotrotz ist das Internet etwas mehr als ein "moderner" Browser und ein fragwürdiges Entwicklungstool von Microsoft. Wenigstens jeweils eine gängige Alternative wäre nett gewesen.
von robbz 21.02.2012 (20:07Uhr) 11.
@Tim: Ein Sponsored Post hat ja eben den Sinn auf ein bestimmtes Produkt aufmerksam zu machen. Das ist quasi wie Werbung. In einem Werbespot von Persil wird ja auch nicht am Ende gesagt "Sie könnten auch Ariel verwenden" ;-)
Aber was mir erst garnicht aufgefallen ist, Marcel aber schon: "falls man keinen modernen Webbrowser wie zum Beispiel den Internet Explorer benutzt" das ist wirklich frech :-D Alle anderen Browser sind um Längen moderner als der IE! In V9 hat sich zwar im Vergleich zu V6 einiges gebessert, aber trotzdem hat er noch mehr als genug Macken, vor allem für Entwickler.
von Dariusz 22.02.2012 (15:38Uhr) 12.
@robbz, @tim, @marcel
Der Satz "falls man keinen modernen Webbrowser..." schließt nicht die anderen modernen Browser wie Chrome, Safari, Firefox und Opera aus und sollte auch keine Wertung darstellen.
von Tim Kraut 24.02.2012 (17:15Uhr) 13.
@robbz:
Prinzipiell stimmt das schon, aber ich finde, Microsoft hat insbesondere im Webbereich eine Sympathiepunkte gut zu machen. Indem man nicht nur die eigenen Produkte wie verrückt anpreist, wäre das vielleicht möglich gewesen.
von Die neuen HTML 5 Tags - XHTMLforum 27.02.2012 (23:31Uhr) 14.
[...] [...]
von Ana 28.02.2012 (15:35Uhr) 15.
Wenn man diesem Beispiel folgt, dann verwende man ja h2 schon im Header der Seite und dann nochmals im Header des Artikels. Wie sieht dies aus SEO-Sicht aus (mehrfache Verwendung von h2, h1 ist nicht der Titel des Artikels, sondern der immer gleiche Titel der Site)?
von Sponsored Post: Semantische Websites mit… 03.03.2012 (11:14Uhr) 16.
[...] Sponsored Post: Semantische Websites mit HTML5 » t3n News [...]