Zu den Artikeln...

dyingeyes weblog: das persönliche Weblog von Boris Stumpf aus Frankfurt am Main

Zur Top-Navigation...

Definitionslisten, wie sie im Buche stehen

1. April 2008 – 19:01 Uhr

Neben den bekannteren Formen von Listen in HTML, der ungeordneten <ul> und der geordneten oder nummerierten Liste <ol>, gibt es einen weiteren vielseitigen Listentyp: die Definitionsliste <dl>. Die Definitionsliste stellt zwei Listenelemente zur Verfügung: den Definitionsausdruck (definition term) <dt> und die Definition (definition data) <dd>.

Das W3C hat sich bei der Elementdefinition nicht nur sehr flexibel gezeigt*, was die vielseitige Verwendbarkeit von Definitionslisten angeht, es hat uns Webdesignern darüber hinaus auch keine Beschränkung auferlegt, wie viele Definitionsausdrücke <dt> und Definitionen <dd> wir in einem Zusammenhang verwenden. Wir verfügen mit der Definitionsliste also über ein semantisch vielseitiges Element.

Ich verwende hier im Blögchen Definitionslisten z.B. für bibliografische Angaben, wenn ich Bücher bespreche, wobei ich den Titel im <dt>-Element und den Originaltitel (bei übersetzten Büchern) sowie die Verlagsangaben in je einem <dd>-Element darstelle.

Eine weitere Möglichkeit für Definitionslisten ist die strukturierte Darstellung wörtlicher Wechselrede, wie sie z.B. bei gedruckten Interviews genutzt wird. In diesem Fall wird für den Fragenden das <dt>-Element verwendet, für den Befragten das <dd>-Element.

Wie im Buch

Eher klassisch, im Wortsinne, kommt die Definitionsliste in Glossaren oder FAQ zum Einsatz. Glossare kennt der Leser (nicht nur) wissenschaftlicher Fachbücher als Auflistung der verwendeten Fachbegriffe nebst Erläuterung, meist in oppositioneller Spaltendarstellung:

Definitionsliste 01

Wie realisiere ich eine solche oppositionelle Darstellung standardkonform und browsersicher?

Ich baue zunächst die Struktur in (X)HTML auf:

<dl class="glossar">
 <dt>background</dt>
 <dd>Angaben zum Hintergrund als Kurzform. Die Eigenschaft
 vereinigt die folgenden Eigenschaften</dd>
 <dt>background-attachment</dt>
 <dd>Fixieren der Hintergrundgrafik, fixed, inherit oder scroll</dd>
 ...
 ...
</dl>

Die Platzierung der Definitionselemente in Opposition und deren wunschgemäße Positionierung muss ich nun mittels Stylesheet vornehmen. Ich entscheide mich aufgrund der einfachen Realisierbarkeit und der Flexibilität für eine fließende Positionierung (float). Tatsächlich ist diese Art der Positionierung nicht ganz trivial, denn ich muss, um das Ganze wirklich flexibel zu halten, für eine Reihe möglicher Fälle vorsorgen.

Das Stylesheet: Fälle und Fallstricke

Schritt 1: Die oppositionelle Position

Ich platziere Definitionsausdruck und Definition auf derselben Zeile, indem ich ersteren per float: left; aus dem Dokumentfluss herausnehme und links neben die Definition verschiebe – die ein absatzgenerierendes (block-level) Element darstellt:

.glossar dt {
  float: left;
  ...
}

Schritt 2: Unterschiedliche Zeilenzahl und Laufweite

In Schritt 2 muss ich nun dem Umstand Rechnung tragen, dass die Definitionen in vielen Fällen mehrere Zeilen umfassen werden, der Definitionsausdruck jedoch immer nur eine Zeile benötigt. Gleichzeitig muss ich gewährleisten, dass ich jederzeit genügend Breite für die Definitionsausdrücke zur Verfügung habe.

Dabei will ich aber möglichst zuverlässig verhindern, dass bei unterschiedlicher Zeilenzahl die Definition sozusagen nach links ›zurückkehrt‹, indem sie den Definitionsausdruck wie ein Bild umfließt. Den Umfluss, wie ich ihn bei einem eingeschobenen Bild bevorzuge, und wie er bei Vergrößerung des Schriftgrades auftreten kann, möchte ich gerade vermeiden:

Definitionsliste 02

Da die Definition <dd> ein absatzgenerierendes Element ist, kann ich sie mit dem Setzen eines Außenabstandes (margin) vom linken Rand des umgebenden Elementes absetzen. Der ›fließende‹ Definitionsausdruck <dt> stört hierbei nicht. Ich wähle nun einen linken Rand (margin-left), der mir genügend Raum lässt, um auch längere Definitionsausdrücke fließend unterzubringen – und sorge damit gleichzeitig für eine visuell ansprechende Spaltendarstellung:

.glossar dd {
  margin-left: 15em;
  ...
}

Definitionsliste 03

Das Konstrukt ist nun stabil, indem die entstandene rechte Spalte jederzeit als Block erhalten bleibt, unabhängig von der Zeilenzahl.

Flexibilität

Um sicherzustellen, dass die auf diese Weise stabil oppositionell gesetzte Definitionsliste auch bei veränderter Schriftgröße im Browser des Betrachters ihr Layout behält, muss ich den vorgenannten margin-Wert mit der Maßeinheit »em« setzen. Den erforderlichen Wert ermittle ich anhand des längsten in meiner Liste vorkommenden Definitionsausdrucks – ich muss hier einfach etwas pi mal Daumen schätzen und auch gerne noch etwas Luft lassen. Im Beispielfall setze ich einen linken Rand von 15em (margin-left: 15em;). Damit verändert bei Veränderung der Schriftgröße lediglich die rechte Spalte (die Definitionen) ihre Breite und in Folge gegebenenfalls die Zeilenzahl, sofern sie vom umgebenden Element (z.B. einer Containerspalte) am Ausbreiten gehindert wird.

Zukünftig, wenn die gängigen Webbrowser die automatische Silbentrennung beherrschen, werden wir Webdesigner es etwas einfacher haben, denn wir werden bei längeren oder Bindestrich-getrennten Begriffen mit kontrolliertem Umbruch arbeiten können.

Das in den Bildern gezeigte Beispiel einer oppositionellen Definitionsliste ist als Demo in HTML und CSS zu sehen und steht zu eigenen Tests, Versuchen und Verwendung natürlich frei zur Verfügung.

* »Definition lists, created using the DL element, generally consist of a series of term/definition pairs (although definition lists may have other applications).«

Creative Commons License
Dieser Inhalt (Textbeitrag und Fotos) ist unter einer Creative-Commons-Lizenz BY-NC-ND lizenziert.

2 Ping-/Trackback(s)

  1. F-LOG-GE » Blog Archive » Definitionslisten nutzen und schön gestalten (1.4.2008)
  2. Definitionslisten bei frankbuerger.eu (2.4.2008)

17 Kommentare zu ›Definitionslisten, wie sie im Buche stehen‹

  1. Perun

    Hi Boris,

    leider werden die Definitionslisten viel zu selten eingesetzt und fristen ein Mauerblümchen-dasein obwohl die sehr flexibel sind, weil man eben drei Ansatzpunkte für CSS-Regeln hat (dl, dt und dd).

  2. Moritz

    Schöner Beitrag. Werde in Zukunft auch mal schauen, wo ich sie sinnvoll einsetzen kann.

  3. Jens Grochtdreis

    Klasse Beitrag! Vielen Dank!

  4. Stefan David

    Schön, dass mal jemand darauf hinweist, dass Definitionslisten nicht ausschließlich für Definitionen zu verwenden sind sondern unterschiedlichste Anwendungsmöglichkeiten haben.

    Sollte es im zweiten CSS-Beispiel nicht “.glossar dd” heißen?

  5. Torsten

    Dein Beispiel im Text hat einen Fehler.

    Dieser Teil
    .glossar dt {
    float: left;
    margin-left: 15em;
    ...
    }

    müsste so aussehen
    .glossar dd {
    margin-left: 15em;
    ...
    }

    Also dd statt dt.

    Wenn man dann noch statt margin-left padding-left nimmt, kann man den dd-Elementen auch noch einen Hintergrund oder einen Border (top oder bottom) zuweisen, um die einzelnen Blöcke optisch noch etwas zu trennen.

    Ich nutze Definitionslisten gern in Formularen. Das Label kommt dann in das dt-Element und die Inputs in das dd-Element.

  6. Christoph Giesinger

    Super Beitrag! Kann ich gut gebrauchen. Herzlichen Dank! :grin:

  7. krono

    Hallo,

    kann es sein, dass der margin-left nicht für das <dt>-Element, sondern das <dd>-element gelten soll? so stehts zumindest im verlinkten .css

    gruß
    krono

  8. Florian

    Sehr schön. Ich verwende Definitionslisten sehr gerne im Zusammenhang mit Bildern und Bildunterschriften. Mit ein bisschen Javascript kann man sogar aus einem Bild samt “alt”- oder “title”-Attribut eine Bildunterschrift erzeugen; das gesamte Konstrukt nutzt dann eben Definitionslisten.

    Sehr gut geeignet für sämtliche CMS, bei denen sich die Art der Bild-Einbindung nicht von vornherein festlegen lässt.

  9. Boris (Autor)

    @alle, die es angemerkt haben: :whistle:

    Danke für den Hinweis auf die falsche Angabe der »margin: left«. Die muss natürlich im »dd« anstatt im »dt« stehen.

    Das war wieder einmal so ein typischer copy&paste-Fehler. Wie ich das hasse. Ich habe hier leider normalerweise keinen Gegenleser mit genügend Kenntnis von HTML/CSS zur Hand.

  10. Matt

    Ich nutze Definitionslisten gerne und für alle möglichen Anwendungsfälle. Daher kann ich auch dem Artikel, der im Adventskalender von 24ways erschien und diese auf reine Definitionsaufgaben beschränken will, mal gar nichts abgewinnen.

  11. Steffen Voß

    Ich muss Florian beipflichten: Defintion-Lists lassen sich auch fein verwenden, um Bilder mit Bild-Unterschriften zu versehen. Oder spricht da etwas gegen?

  12. Jochen Rieger

    Hi Steffen,

    nein, sollte eigentlich nichts dagegen sprechen. Das Content Management System TYPO3 zum Beispiel rendered Bilder und Bildunterschriften schon länger auf diese Art und Weise.

  13. Claude

    Bei mehrzeiligen Definitionen macht der IE – wenn überrascht’s? – mit dem margin-left einen Fehler: es gibt eine leichte Abstufung.

    Das kann mit folgender IE-spezifischer Korrektur gelöst werden:

    dd {
    text-indent: -3px;
    }

  14. Ralph

    Ja, Definitionslisten sind etwas sehr brauchbares, auch für Navigationen funktionieren diese gut ;)

    Danke für die sehr hilfreiche Zusammenfassung.

    Aus Dresden grüssend

    Ralph

  15. Benedict

    Schöner Beitrag, da fallen mir gleich wieder ein paar laufende Projekte ein, bei denen eine Definitionliste die bessere Wahl ist.

  16. Benjamin

    wenn der dt-tag ein img-tag einschließt, dann ist Pustekuchen mit sauberer Liste, da der nächste dt-tag kein Clearing betreibt.

    Das ist echt Schade !

  17. LeoXP

    Danke für das Auffrischen meines Gedächtnisses. Sinnvoll erscheinen mir Definitionslisten als Ersatz für einfache Tabellen – eben wegen der eifachen Semantik. Ein Screenreader (Stichwort Barrierefreiheit) wird mit Definitionslisten keine Probleme haben, oder?

Voriger Artikel: Plugin-Kompatibilität? WordPress 2.5
Nächster Artikel: Der Winter ist abmontiert

2004-2010 | Layout, Theme und Inhalte: Boris Stumpf – dyingeyes weblog | Impressum | Wordpress

Zuletzt Kommentiert:

  • Anne am 16.8.2010:
    Hi Boris, Da denke ich dann auch gerne mal an Klaus Kinskiy mit “Von wem ich mich beleidigen...
  • Pepino am 5.8.2010:
    In der Tat, das finde ich sogar sehr beruhigend! PS: Danke für’s erwähnen und für’s...
  • zungenwerk am 21.6.2010:
    …..höchste zeit jemanden zu suchen, der dir auf die harley hilft…..
  • Andi am 20.6.2010:
    Tja, es ist gar nicht mehr so einfach ein Handy zu finden, mit dem man nur telefonieren...
  • Mario H. am 16.6.2010:
    Ach was, das ist viel zu unsicher. Bloß nirgendwo notieren – am besten gleich vergessen.
  • Anne am 14.6.2010:
    Ach weißt Du, Das ist immer derselbe Mist mit den Verkäufern (gerade von Mobiltelefonen), die...

Kategorien: