Wie kann ich mit CSS Folgendes formatieren:
<dl>
<dt>Mercury</dt>
<dd>Mercury (0.4 AU from the Sun) is the closest planet to the Sun and the smallest planet.</dd>
<dt>Venus</dt>
<dd>Venus (0.7 AU) is close in size to Earth, (0.815 Earth masses) and like Earth, has a thick silicate mantle around an iron core.</dd>
<dt>Earth</dt>
<dd>Earth (1 AU) is the largest and densest of the inner planets, the only one known to have current geological activity.</dd>
</dl>
Also der Inhalt der dt
Show in einer Spalte und der Inhalt der dd
in einer anderen Spalte, wobei jeder dt
und der entsprechende dd
in derselben Zeile steht? Dh etwas produzieren, das aussieht wie:
Antworten:
quelle
clear: left
, dem dt-Stil ein hinzuzufügen , um sicherzustellen, dass sie auch dann inline bleiben, wenn sie umwickelt werden müssen.* { ... }
Anweisung lässt alles den Rand und die Polsterung verlieren, und das Entfernen verzerrt den DL. Die Verwendung einer Klasse reicht auch nicht aus. Es scheint, dass ich, wenn ich etwas anderes als den DL will, überall auf Ränder und Polster verzichten muss ... Oder?Ich habe eine Lösung ohne Schwimmer!
Überprüfen Sie dies auf Codepen
Nämlich.
Update - 3 rd Januar 2017: Ich habe hinzugefügt Flex-Box - basierte Lösung für das Problem. Überprüfen Sie dies im verknüpften Codepen und verfeinern Sie ihn nach Bedarf. Vielen Dank!
quelle
CSS-Rasterlayout
Schauen Sie sich die
grid-template-columns
Eigenschaft an , um die Spaltengrößen zu ändern .quelle
Wenn Sie Bootstrap 3 (oder früher) verwenden ...
quelle
dl-horizontal
wurde tatsächlich aus Bootstrap 4 entfernt. In BS4 müssen Sie stattdessen Grid-Klassen verwenden.Angenommen, Sie kennen die Breite des Randes:
quelle
Da ich noch kein Beispiel für meinen Anwendungsfall gesehen habe, ist hier die vollständigste Lösung, die ich realisieren konnte.
Seltsamerweise funktioniert es nicht mit
display: inline-block
. Ich nehme an, wenn Sie die Größe eines derdt
Elemente oderdd
Elemente festlegen müssen, können Sie diedl
Anzeige desdisplay: flexbox; display: -webkit-flex; display: flex;
und als und dieflex
Kurzform derdd
Elemente und derdt
Elemente als etwas wieflex: 1 1 50%
unddisplay
als festlegendisplay: inline-block
. Aber ich habe das nicht getestet, also gehe vorsichtig vor.quelle
Siehe jsFiddle-Demo
Ich brauchte eine Liste genau wie beschrieben für ein Projekt, das Mitarbeiter eines Unternehmens mit ihrem Foto links und Informationen rechts zeigte. Ich habe es geschafft, das Clearing mit Pseudo-Elementen nach jedem zu erreichen
DD
:Außerdem wollte ich, dass der Text nur rechts vom Bild angezeigt wird, ohne unter das schwebende Bild zu wickeln (Pseudo-Spalten-Effekt). Dies kann erreicht werden, indem ein
DIV
Element mit dem CSSoverflow: hidden;
um den Inhalt desDD
Tags hinzugefügt wird . Sie können dieses Extra weglassenDIV
, aber der Inhalt desDD
Tags wird unter dem Float eingeschlossenDT
.Nachdem ich eine Weile damit gespielt hatte, konnte ich mehrere
DT
Elemente proDD
, aber nicht mehrereDD
Elemente pro unterstützenDT
. Ich habe versucht, eine weitere optionale Klasse hinzuzufügen, um sie erst nach dem letztenDD
, aber nachfolgendenDD
Element zu löschen , das unter denDT
Elementen eingeschlossen ist (nicht mein gewünschter Effekt… Ich wollte, dass dieDT
undDD
-Elemente Spalten bilden und die zusätzlichenDD
Elemente zu breit sind).Dies sollte auf jeden Fall nur in IE8 + funktionieren, aber aufgrund einer Eigenart in IE7 funktioniert es auch dort.
quelle
Hier ist eine weitere Option, bei der dt und dd inline angezeigt und nach dd ein Zeilenumbruch hinzugefügt wird.
Dies ähnelt der obigen Navaneeth-Lösung, aber bei diesem Ansatz wird der Inhalt nicht wie in einer Tabelle ausgerichtet, sondern der dd folgt dem dt in jeder Zeile unabhängig von der Länge sofort.
quelle
Ich muss dies tun und den
<dt>
Inhalt vertikal zentriert relativ zum<dd>
Inhalt haben. Ich habedisplay: inline-block
zusammen mitvertical-align: middle
Das vollständige Beispiel zu Codepen finden Sie hier
quelle
Abhängig davon, wie Sie die Elemente dt und dd formatieren, kann ein Problem auftreten: Sie müssen dieselbe Höhe haben. Wenn Sie beispielsweise einen sichtbaren Rand am unteren Rand dieser Elemente anzeigen möchten, möchten Sie den Rand höchstwahrscheinlich auf derselben Höhe wie in einer Tabelle anzeigen.
Eine Lösung hierfür ist das Betrügen und das Erstellen jeder Zeile zu einem "dl" -Element. (Dies entspricht der Verwendung von tr in einer Tabelle.) Wir verlieren das ursprüngliche Interesse an Definitionslisten, aber auf der anderen Seite ist dies eine einfache Möglichkeit, Pseudotabellen zu erhalten, die schnell und hübsch gestaltet sind.
DAS CSS:
DER HTML:
quelle
quatreVingtCinqPts
? :)Ich habe eine Lösung gefunden, die mir perfekt erscheint, aber zusätzliche
<div>
Tags benötigt. Es stellt sich heraus, dass es nicht erforderlich ist, ein<table>
Tag zum Ausrichten wie in einer Tabelle zu verwenden. Es reicht aus, es zu verwendendisplay:table-row;
und zudisplay:table-cell;
formatieren:quelle
dl
s nur als Kinderdt
s unddd
s haben dürfen .dt
s können nur als untergeordnete Elemente Inline-Elemente enthalten.dd
s kann aus irgendeinem Grund als untergeordnete Elemente Elemente auf Blockebene haben.DI
Element, wie ich . Aber mit einem solchen Element brauchen Sie überhaupt keine esoterischen Dinge wie CSS-Tabellen ... Jedenfalls existiert dieses Element nicht und Sie sollten es daher nicht verwenden.run-in
CSS-display
Wert genau das ist, was ich will (in meinem Fall möchte ich einfache Name-Wert-Metadatenlisten).Ich musste kürzlich Inline- und Nicht-Inline-dt / dd-Paare mischen, indem ich die Klasse
dl-inline
für<dt>
Elemente spezifizierte, auf die Inline-<dd>
Elemente folgen sollten .quelle
Dies funktioniert auf IE7 +, ist standardkonform und ermöglicht unterschiedliche Höhen.
Siehe die JSFiddle .
quelle
Dies funktioniert, um sie als Tabelle mit Rand anzuzeigen. Es sollte mit 3em der Breite der ersten Spalte reagieren. Der Zeilenumbruch unterbricht nur alle Wörter, die breiter als die Spalte sind
Vergleich
<table>
mit<dl>
:quelle
Normalerweise beginne ich mit dem folgenden, wenn ich Definitionslisten als Tabellen gestalte:
quelle
Das meiste, was hier vorgeschlagen wurde, funktioniert. Sie sollten jedoch nur generischen Code in das Stylesheet einfügen und den spezifischen Code wie unten gezeigt in den HTML-Code einfügen. Andernfalls erhalten Sie ein aufgeblähtes Stylesheet.
So mache ich das:
Ihr Stylesheet-Code:
Ihr HTML-Code:
Sieht aus wie das
quelle