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;
}

