dlのレイアウト集

さて、定義リストとされるdl要素はとても便利です。拡大解釈すれば、見出しが必要なくなり、ul要素さえもいらなくなるかもしれません。拡大解釈しすぎると文書が破綻するので、そのあたりのバランスはうまくとりましょう(逃げます)

まずは基本的な表組みっぽいレイアウトを実践してみましょう。

dlで表組みっぽくするにはネガティブマージンだけ。floatは不要?

使用するhtmlは以下です。これから4つのクラスを適用させてレイアウトを変更していきます。とその前に、なぜfloatがダメなのかですね。dlでのfloatレイアウトはddを連続して用いたときにIEで謎の3pxズレが発生したりIEでのclearがちょっと特殊だったり(幅によりけり)と、IEに足を向けて寝てたバチが当たったとしか思えないくらい、しんどいことが多いです。ので、僕はネガティブマージン一発、もしくは絶対配置でいきます。そのほうが面倒なこと少ないからね〜。

以下、4つのレイアウトclassの一行解説です。

  • class="date1 はネガティブマージン一発でやってます。
  • class="date2 はddに左にネガティブマージンを入れることで、罫線を重ね合わせています。
  • class="date3 はごく普通のdl要素レイアウト。classをかえるだけで、表組みっぽかったものが、dlっぽいものになってます。
  • class="date4 は絶対配置を活用しています。まさに表組みっぽい。

htmlソースの下にボタンを置いているので、実際にみてください。ボタンはdlのclassを変更しているだけです。


<dl id="targetDL" class="date1">
	<dt>07/07/25</dt>
	<dd>本アップに伴い、リンクチェックをしました。</dd>
	<dt>07/07/24</dt>
	<dd>ファイルをアップロードしました。</dd>
	<dd>記事を訂正しました。</dd>
	<dt>07/07/23</dt>
	<dd>記事を追記しました。</dd>
	<dt>07/07/22</dt>
	<dd>イベントの内容をアップしました。</dd>
	<dt>07/07/21</dt>
	<dd>イベントしました。</dd>
</dl>
07/07/25
本アップに伴い、リンクチェックをしました。
07/07/24
ファイルをアップロードしました。
記事を訂正しました。
07/07/23
記事を追記しました。
07/07/22
イベントの内容をアップしました。
07/07/21
イベントしました。

class="date1"
dl.date1 {
}

dl.date1 dt {
	margin-bottom: -2.1em;
	padding-top: 0.5em;
	width: 100px;
}

dl.date1 dd {
	border-left: 1px solid #ccc;
	margin-bottom: 1em;
	margin-left: 105px;
	padding: 0.5em;
}



class="date2"
dl.date2 {
	border-left: 5px solid #333;
}

dl.date2 dt {
	margin-bottom: -2.1em;
	padding-top: 0.5em;
	padding-left: 5px;
	width: 100px;
	font-weight: bold;
}

dl.date2 dd {
	border-bottom: 1px solid #ccc;
	margin-bottom: 0.5em;
	margin-left: -5px;
	padding: 0.5em 0 0.5em 105px;
}

class="date3"
dl.date3 {

}

dl.date3 dt {
	border-left: 3px solid #333;
	font-weight: bold;
	padding: 3px;
}

dl.date3 dd {
	padding-left: 15px;
	margin-bottom: 1em;
}

class="date4"
dl.date4 {
	background: #efefef;
	border: 1px solid #ccc;
	border-top: none;
	width: 100%;
	position: relative;
}

dl.date4 dt {
	background: #efefef;
	border-top: 1px solid #ccc;
	position: absolute;
	left: 0;
	width: 10em;
	padding: 0.2em 0.4em;
}

dl.date4 dd {
	background: #fafafa;
	border-top: 1px solid #ccc;
	border-left: 1px solid #ccc;
	margin-left: 10.8em;
	padding: 0.2em 0.4em;
}

ページトップへ戻る