Semantik im Web (3/4)
Kategorie HTML & CSS
Datum: 15.10.2008, 15:54 - Autor: Manko10
3. Semantik der Elemente
Es existieren in der HTML zwei Arten von Elementen: die logischen Elemente und die physischen Elemente. Die logischen Elemente sind die eigentlich wichtigen Elemente, sie dienen zur Auszeichnung von Text.Die physischen Elemente sind so allmählich mangels vernünftig nutzbarer CSS-Standards in den HTML-Standard eingekleckert und dienen der unmittelbaren Formatierung von Text. Sie sollten aber mittlerweile der Vergangenheit angehören und sind nur noch in in Transitional-DTDs erlaubt, nicht aber in den Strict-Varianten (einen Link zu einem ebenfalls auf openwebboard.org veröffentlichten Tutorium zum Thema findest du im Fuß dieses Artikels).
Im Folgenden werden die häufigsten Fallen in der logischen Auszeichnung angesprochen.
3.1 Tabellen
Tabellen — wohl das meist missverstandene Element in der Hyptertext Markup Language. Schon lange ist es beinahe Tradition, Tabellen für das Layout der Seite einzusetzen. Es ist ja auch praktisch: so kann man seine Seite in einzelne Sektoren einteilen, die jeweils durch eine Zelle repräsentiert werden.Doch das ist hochgradig Quatsch und ein typisches Beispiel für HTMülL. Tabellen sind Tabellen und nichts weiter. Sie dienen nicht zur Formatierung und nicht zum Layout, sie dienen dazu, tabellarische Daten als solche auszuzeichnen und dafür sollten Tabellen auch angewandt werden. Für das Layout der Seite sind <div>-Tags in Verbindung mit CSS zu benutzten.
Tabellarische Daten sind das, was du auch in Programmen wie Excel oder OpenOffice.org Calc erstellst, nichts anderes. Oft werden tabellarische Daten von Leuten, die sich seit neustem dem semantischen Webdesign verschieben haben, mit Auflistungen verwechselt. Tabellen werden wirklich nur für tabellarische Daten verwendet, auch nicht für Listen!
Daten sind dann tabellarisch, wenn sie in Zeilen und Spalten angeordnet sind.
Ein Beispiel für eine Tabelle:
| Code: | ||
|---|---|---|
|
Wer seine Tabelle noch weiter auszeichnen will, dem seien die Elemente <thead>, <tbody> und <tfoot> empfohlen; mit ihnen lässt sich die Tabelle noch weiter in einen Kopf, einen oder mehrere Körper und einen Fuß gliedern.
3.2 Listen
Und hier die Nummer Zwei der meist missverstandenen HTML-Elemente aller Zeiten: die Listen!Listen dienen, wie sich unschwer am Namen feststellen lässt, zur Auflistung von Daten. Listen sind somit eine Unterstufe der Tabellen, aber während Tabellen immer zweidimensional sind (also Zeilen und Spalten beinhalten), sind Listen linear.
Wenn wir das obige Beispiel wiederaufgreifen, könnte eine Liste z.B: dazu dienen, alle Artikelbezeichnungen, die im Sortiment vorhanden sind, aufzulisten:
| Code: | ||
|---|---|---|
|
Sollen die Artikel hingegen nach Namen sortiert werden, so wird eine geordnete Liste verwendet:
| Code: | ||
|---|---|---|
|
Listen dienen also zur Auflistung von Daten. Auflistungen müssen aber nicht immer wie oben aussehen. Auch Navigationen sind eine Auflistung von Links und sollten somit als ungeordnete Liste ausgezeichnet werden.
Das häufigste Missverständnis liegt aber nicht in den geordneten und ungeordneten Listen, sondern in den Definitionslisten.
Definitionslisten beschreiben einen Begriff und eine oder mehrere Definitionen dieses Begriffs. Hier werden oft fälschlicherweise Tabellen eingesetzt, aber die Daten einer Definitionsliste haben eindeutig Listencharakter.
Um diesen etwas umständlichen Sachverhalt zu erklären, dient wieder ein Beispiel. Zu jedem Hersteller sollen die Produkte aufgelistet werden. Dies ließe sich zum einen mit einer Tabelle erreichen, doch wäre dies semantsicher Unfug, da es sich genaugenommen um eine Auflistung handelt.
Definitionslisten bestehen aus der Liste selbst <dl>, Definitionsausdrücken <dt> und einer oder mehreren Definitionen der Definitionsausdrücke <dd>.
In unserem Falle sind die Hersteller die Definitionsausdrücke und die Produkte die Definitionen:
| Code: | ||
|---|---|---|
|
3.3 Textformatierungen
Ebenfalls ein sehr häufiges Problem: Textformatierung mittels HTML. Aber wir wissen ja jetzt: HTML ist nur zur Auszeichnung da, die Formatierung übernehmen die CSS.3.3.1 Font-Tags
Ja, ja, ja! Das leidige Thema der Font-Tags. Ehemals von Netscape eingeführt, fanden sie rasch breite Verwendung. Wohl auch deshalb, weil CSS lange auf sich warten ließ.Wer kennt es nicht: ein Text soll farbig und in einer anderen Größe dargestellt werden:
| Code: | ||
|---|---|---|
|
Sauberer ist die Verwendung eines <span>-Tags, das an sich keine feste logische Bedeutung hat — genau wie eine Formatierung.
| Code: | ||
|---|---|---|
|
| Code: | ||
|---|---|---|
|
3.3.2 Fetter Text und Kursive
Sehr häufig übersehen ist die Formatierung von fettem und kursivem Text. Wer benutzt sie nicht, diese kleinen unscheinbaren Biester Namens <b> und <i>? Sie haben sich zudem in den Strict-Standard eingeschlichen. Dabei haben sie dazu eigentlich keine Berechtigung.Auch hier sollten Alternativen verwendet werden. Doch wer jetzt denkt: „O Gott, ich muss lange <span>-Romane schreiben“, der sei beruhigt. Es geht auch anders.
Wozu werden Texte denn fett oder kursiv gestaltet? Um sie hervorzuheben. Und genau dies kann man doch als Auszeichnung verstehen. Fetter Text soll besonders hervorgehoben werden und kursiver Text soll auch hervorgehoben werden, wenn auch nicht so stark, dass er aus dem übrigen Text herausfällt.
Für diese beiden Zwecke bietet der Standard die Tags <strong> und <em>. Sie entsprechen genau dem, was wir wollen: sie kennzeichnen Textpassagen als wichtig. Dass die Browser <strong> fett und <em> kursiv darstellen, muss dich dabei nicht beunruhigen. Dies ist nur eine Verabredung, um Einheitlichkeit zu gewährleisten, doch handelt es sich wirklich nur um logische Auszeichnungen, die auch ganz anders dargestellt werden könnte.
Ein Schlusswort noch zum Tag <u>: dieses Tag hat es nicht in den Strict-Standard geschafft. Um einen Text unterstrichen darzustellen, sind also <span>-Tags erforderlich. Doch hat der Rauswurf einen guten Grund: zum einen handelt es sich natürlich um ein physisches Element, zum anderen irritiert unterstrichener Text aber auch, da eine Unterstreichung im Web in aller Regel einen Link kennzeichnet, weshalb auf Unterstreichungen im Text verzichtet werden sollte.
3.3.3 Überschriften
Wozu gibt es eigentlich so viele Tags für Überschriften — gleich sechs Stück an der Zahl?Nun, dies ist so, um Überschriften semantisch ordnen zu können. Dabei stellt <h1> eine Überschrift erster Ordnung dar (in diesem Artikel ist dies die Artikelüberschrift) und <h6> eine Überschrift letzter Ordnung (so weit komme ich in diesem Artikel aber nicht).
Die Überschriften werden also hierarchisch geordnet, wobei immer mit <h1> angefangen wird. Überschriften gleichen Ranges haben natürlich auch gleiche Tags. Du kannst ja einmal im Quelltext dieser Seite die Überschriftenhierarchie verfolgen. Sie folgt streng der logischen Ordnung.
Mit Überschriften können durch die Hierarchie Textzugehörigkeiten festgelegt werden, da genau festgelegt ist, welcher Teil zu welcher Überschrift gehört. Ebenso ist festgelegt, welche Überschrift welcher anderen untergeordnet ist. Dadurch lässt sich der Text in einzelne Teile gliedern.
Das Schlimmste, was einem oft begegnet, ist übrigens nicht eine falsche Überschriftenhierarchie, sondern die Vermeidung von Überschriften nach dem folgenden Muster:
| Code: | ||
|---|---|---|
|
Oftmals kommt der Impuls zu „Fake-Überschriften“ daher, dass <h1> für viele Leute viel zu groß ist. Doch wenn man bedenkt, dass sich dies alles mit CSS anpassen lässt, merkt man, wie lächerlich dieses Argument ist. Zudem ist <h1> viel kürzer als <div class="heading">.
3.3.4 HTML-Attribute
Kommen wir zum letzten Teil des Abschnitts über Textformatierungen.Häufig werden HTML-Attribute zur Formatierung von Text eingesetzt. So z.B. color, align (oder oft das Element <center>), valign, height, width u.v.m.
Doch auch hier ist schnell ersichtlich, dass diese Art der Formatierung ein Fauxpas ist. Besser ist es, ein Element mit einem Attribut class zu versehen. Über dieses Attribut kann das Element dann später mit CSS formatiert werden und es besteht keinerlei Bedürfnis mehr, Attribute zu verwenden.
3.4 Abstände zwischen Absätzen
Oft gesehen und doch übersehen: die Erzeugung von Abständen zwischen Absätzen. Ein einzelner Absatz wird bekanntlich durch <p> gekennzeichnet. Doch will man nun den Abstand zum nächsten Absatz vergrößern, wird meist auf <br> zurückgegriffen. Es entstehen skurrile Konstrukte wie dieses:| Code: | ||
|---|---|---|
|
Es dient nur zur Darstellung eines Zeilenumbruchs und befindet sich somit in der Grauzone zwischen logischen und physischen Elementen. Ob man es einsetzt, muss man also bis zur vollständigen Klärung durch einen neuen Standard mit sich selbst ausmachen.
Es dient aber auf keinen Fall zur Erzeugung von Abständen, zumal diese auch wieder eine Formatierung darstellen. Für die Erzeugung von Abständen sind die CSS-Eigenschaften margin und padding entworfen worden und sie sollten ihrer Bestimmung auch zugeführt werden, anstatt sich mit Zeilenumbrüchen herumzuschlagen.
3.5 Bilder und Hintergrundbilder
Heißt geliebt und abgrundtief gehasst: das <img>-Tag.Es dient zur Einbindung von Bildern und wird rege genutzt. Hat aber nun eine Seite an bestimmter Stelle ein Hintergrundbild, so wird es auch hier eingesetzt und das ist wiederum Blödsinn. <img> dient zur Einbindung bestimmter Bilder, die auch direkt etwas mit dem Inhalt zu tun haben.
Wird hingegen ein Bild zur Verzierung oder zur Hintergrundverschönerung benötigt, winkt CSS nicht etwa mit dem Zaunpfahl, sondern mit der Eigenschaft background-image oder der Kurzform background. Aus verschiedenen Gründen sollte diese eingesetzt werden:
- die Grafik hat nicht unmittelbar etwas mit dem Text zu tun, sollt also separiert werden
- werden die Styles der Seite im Browser ausgestellt, verschwindet auch die Hintergrundgrafik, <img>-Grafiken bleiben aber
- Hintergrundgrafiken beeinflussen nicht das Ladeverhalten der Seite, wohingegen <img> den Browser veranlasst, solange zu warten, bis die Grafik vollständig geladen wurde
3.6 IDs und Klassen
Worin liegt der Unterschied zwischen den Attributen id und class? Richtig: eine ID gibt es auf der Seite nur ein einziges Mal.Deshalb sollten IDs auch für einzigartige Seitenelemente verwendet werden. Eine typische Schlamperei liegt gleich im Aufbau der Seite:
| Code: | ||
|---|---|---|
|
| Code: | ||
|---|---|---|
|
3.7 Links zum Thema
- Der Transitional-Wahn
- Sind HTML-Tabellen out?
- Tabellenloses Webdesign CSS
- e=css² - Barrierefreies Webdesign
- Should I use tables for layout?
Weiter geht es mit Teil 4…
7 Kommentare:
Wie besprochen ^^
Datum: 15.10.2008, 18:16 - Autor: Gast
Dieser Artikel wurde von JEGO persönlich gelesen und für brauchbar befunden! (worüber der Verfasser sehr stolz ist)Datum: 15.10.2008, 18:20 - Autor: Manko10
JEGO, du hast doch einen Knall und es tatsächlich getan!
Aber es freut mich, dass dir der Artikel gefällt.
Datum: 15.10.2008, 20:20 - Autor: nik
Hallo (nur mal "Hallo" wollte ich sagen, aber der Kommentarbeurteileralgorithmusbobachtermann hat sich beschwert, mein Beitrag sei zu kurz!!)Datum: 15.10.2008, 20:28 - Autor: Manko10
Hallo zurück!So, Blocksatz für die Kommentare wurde ausgeschaltet, Flattersatz ist angesagt!
Ja, der Beurteilungskerl ist sehr streng, aber auch sehr wirksam, wie du unschwer links am Spamfresser erkennen kannst. Seit ich den programmiert habe, ist kein Spam mehr durchgekommen.
Datum: 15.10.2008, 20:29 - Autor: nik
Geil, ein Zähler für gefresse Spams. Schöne Idee. Die klau ich dir irgendwann mal...Datum: 30.12.2008, 21:49 - Autor: Joon
Jaja die HTML nerds ;-)Datum: 30.12.2008, 21:55 - Autor: Manko10
Das hat nichts mit Nerds zu tun, das sollte eigentlich für jeden selbstverständlich sein.