Nutzung der unterentwickelten (aber semantisch großartigen) Definitionsliste

Avatar of Chris Coyier
Chris Coyier am

DigitalOcean bietet Cloud-Produkte für jede Phase Ihrer Reise. Starten Sie mit 200 $ kostenlosem Guthaben!

Semantik! Wenn wir über Semantik in HTML sprechen, meinen wir, wie HTML-Tags verwendet werden, um den Inhalt zu beschreiben. **Gute Semantik** bedeutet, dass die Tags gut verwendet werden, um den Inhalt zu beschreiben. **Schlechte Semantik** bedeutet, dass die schlecht verwendeten Tags den Inhalt beschreiben. **Gute Semantik** bedeutet nicht unbedingt, dass die geringstmögliche Anzahl von Tags verwendet wird, sondern nur, dass die verwendeten Tags Sinn ergeben und, ebenso wichtig, zusammen Sinn ergeben. **Schlechte Semantik** bedeutet nicht unbedingt, dass Sie Tags falsch verwendet haben, das bezieht sich eher auf die *Syntax*.

Ein visuelles Beispiel.

Betrachten wir ein Beispiel für einen Inhalt.

example1dl.png

Semantisch gesehen kann man diesen Inhalt als zwei zusammenhängende Blöcke betrachten. Ein Block heißt „Ausgaben verfolgen“ und enthält einige beschreibende Daten, der andere heißt „RSS-Feeds“ und enthält einige beschreibende Daten. Behalten Sie das im Hinterkopf und schauen Sie sich dann diesen Code an.

<div class="chunk">
  <h4>Track your expenses</h4>
  <img src="/images/paper_small.gif" alt="" class="left"/>
  <p>Divide bills easily by creating receipts and letting billshare do the math. Automatically keep a searchable history of all bills.</p>
</div>
<div class="chunk">
  <h4>RSS Feeds</h4>
  <img src="/images/rss_big.jpg" alt="" class="left"/>
  <p>Keep track of new receipts are posted to your groups instantly by subscribing to the groups RSS feed.</p>
</div>

Semantisch ist das falsch.

Obwohl dieser Code ziemlich sauber ist und problemlos funktioniert, weicht er semantisch von unseren ursprünglichen Gedanken ab. Es gibt zwei Probleme. Erstens trennen die div’s die Blöcke unabhängig voneinander, anstatt sie zusammenzuhalten. Zweitens ist die „Beschreibung“ in ein `<img>`-Element und ein `

`-Element aufgeteilt, anstatt zusammengehalten zu werden.

Die Definitionsliste rettet die Situation.

Okay, okay. Wir haben das Beispiel manipuliert. Dies ist zufällig ein perfektes Szenario für eine Definitionsliste. Definitionslisten bestehen aus drei verschiedenen Tags.

  • <dl>: Container
  • <dt>: Definitionsterm (wie ein Titel)
  • <dd>: Definitionsbeschreibung

Lassen Sie uns nun versuchen, diesen Inhalt mithilfe von Definitionslisten neu zu schreiben. Wir wissen, dass wir das Ganze jetzt in einen Container packen können, um alles zusammenzuhalten. Wir wissen, dass wir die Titel als Definitionsterme festlegen können. Aber was ist mit der Beschreibung? Der beste Weg, semantisch gesehen, wäre, all das in ein einziges Definitionsbeschreibungselement aufzunehmen ... und das können wir! Der einzige Stolperstein ist, dass sich die Bilder zwischen den Blöcken ändern, daher müssen wir den `

`-Elementen eine eindeutige Klasse zuweisen.

<dl>
  <dt>Track your expenses</dt>
  <dd class="chunk_divide">Divide bills easily by creating receipts and letting billshare do the math. Automatically keep a searchable history of all bills.</dd>

  <dt>RSS Feeds</dt>
  <dd class="chunk_rss">Keep track of new receipts are posted to your groups instantly by subscribing to the groups RSS feed.</dd>
</dl>

Diese Tags bieten Ihnen reichlich Styling-Möglichkeiten in Ihrem CSS.

dt {
  font-weight: bold;
}
dd {
  background:none no-repeat left top;
  padding-left: 50px;
}
dd.catchPhrase1 {
  background-image:url('../img/paper_small.gif');
}
dd.catchPhrase2 {
  background-image:url('../img/stats.gif');
}

Könnte ich das nicht mit einer unsortierten Liste machen?

Sicher, das könnten Sie. Aber Listen können nur Listenelemente enthalten, daher werden der Titel und die Beschreibung nicht so gut semantisch beschrieben wie mit einer Definitionsliste. Zum Teufel, Sie könnten das mit einer Tabelle, mit Divs, mit einer beliebigen Anzahl von HTML-Elementen machen, aber keines davon wird in diesem Fall so viel semantischen Sinn ergeben wie eine Definitionsliste.

Was können sie sonst noch tun?

Ich bin froh, dass Sie fragen, denn dieses Beispiel nutzt nicht alles, was Definitionslisten zu bieten haben. Eine weitere große Stärke ist, dass Sie innerhalb einer Definitionsliste mehrere Begriffe oder mehrere Beschreibungen verwenden können, das ist egal! Denken wir an einige Beispiele.

DT: **Website-Link**
  DD: Beschreibung der Website

DT: **Bevorstehender Gig**
  DD: Datum
  DD: Veranstaltungsort
  DD: Eintrittspreis

DT: **Pseudonym #1**
DT: **Pseudonym #2**
  DD: Was es bedeutet

DT: **Rezept**
  DD: Zutat
  DD: Zutat
  DD: Anweisungen

Wenn man erst einmal anfängt, wirklich darüber nachzudenken, gibt es so viele praktische Beispiele für Definitionslisten, dass es überraschend ist, dass man sie im Code nicht sehr oft sieht.

Warum sind Definitionslisten nicht weiter verbreitet?

Es ist schwer zu sagen... Ich denke, der größte Grund ist die Suchmaschinenoptimierung (SEO). Leute wissen (oder denken, sie wissen), dass Überschriften (Header-Tags) Inhalten zusätzliches Gewicht und Bedeutung verleihen. Bei richtiger Anwendung ersetzt Ihr Term-Tag die Notwendigkeit einer Überschrift. Ich gehe davon aus, dass die Leute denken, sie würden dadurch weniger Suchmaschinen-Saft aus ihren Inhalten ziehen. Ich werde zu diesem Thema keine Aussage machen, da ich kein SEO-Genie bin, aber mein Bauchgefühl sagt mir, dass Sie für gut markierten Code niemals bestraft werden.

Eine weitere Einschränkung ist, dass Sie keine Block-Level-Elemente innerhalb des `<dt>`-Elements verwenden können. Das ist ähnlich wie bei Überschriftenelementen (z. B. `

`) . (Huttipp Paul O’Brien)

Weiterführende Lektüre.

Definitionslisten – falsch verwendet oder missverstanden?

Demo und Download

Demo anzeigen   Dateien herunterladen