5

次のような単純な定義リストを使用したいと思います。

<dl>
  <dt>name:</dt>
  <dd>Tomas</dd>

  <dt>address:</dt>
  <dd>this is a very long wrapping address</dd>

  <dt>age:<dt>
  <dd>29</dd>
<dl>

次のようなものをレンダリングします。

name: Tomas
address: this is a very long
wrapping address
age: 29

ここでは、定義リストが意味的に最適なオプションのようです。

新しい慣らし表示スタイルを使用すると、うまくいきます。

<style> dt { display: run-in; } </style>

しかし、これはまだ広くサポートされていません。HTMLを変更せずに(現在、インライン表示を使用して醜いbrを追加する)、クロスブラウザサポートを改善するために定義リストのスタイルを設定するにはどうすればよいですか(ie6は必要ありません)?

明確にするために編集:

dt { clear: left; }
dd { float: left; }

次のようにレンダリングされるため、機能しません。

name: Tomas
address: this is a very long
         wrapping address
age: 29

設計では、スペースを確保するために、これらの複数行フィールドが行の先頭に折り返されるように指定されています。

4

5 に答える 5

8

私はこれがうまくいくと思います:

dt {
  float: left;
  clear: left;
  margin: 0;
  padding: 0 .5em 0 0;
}
dd {
  margin: 0;
  padding: 0;
}

便利なもう 1 つのオプションは、:after疑似クラスです。dt各要素のコロンをスキップして、次のようにすることができます。

dt:after {
  content: ":";
}

これにより、より柔軟になり、リストやウェブサイト全体でその文字を変更したり、必要に応じて削除したりできます.

あなたが言及したラッピングの問題を解決するには、要素dtdd要素の両方に幅を設定する必要があります。または、th名前/アドレスなどとtd「データ」にテーブルを使用します。IMOテーブルは、ここでは意味的に受け入れられるソリューションです-それ表形式のデータです。

于 2009-10-16T10:49:09.517 に答える
0

単純に dt を float にすることもできます: left

dt { float: left; }

または、dt をインラインで表示させます。

dt { display: inline; }
于 2009-10-16T10:50:01.480 に答える
0

私はこれを考えます(小さな幅をテストするために最初の行のコメントを外します):

dl, dd, dt { margin: 0; }
/*dl { width: 80px; }*/
dl dt, dl dd { display: inline; }
dl dd:after { content: ' '; padding-left: 100%; }
于 2009-10-16T11:00:38.500 に答える
0

そのように、前の要素の左側に dd をフロートすることができます。

dt { clear: left; }
dd { float: left; }

追加の配置のために、幅属性をどちらかに追加することもできます。

dt { clear: left; width: 20%; }
dd { float: left; }
于 2009-10-16T10:48:22.433 に答える
0

dd からデフォルトの左マージンを削除する必要があります。

dt {float:left;clear:left;margin-right:5px;}
dd {margin:0;}
于 2009-10-16T11:06:02.497 に答える