【CSS】ネガティブマージンの使いどころ その2 表組み風レイアウト編

愛車の Vespa がブチ壊れてとてもブルーな sakai です。国産に買い替え検討中…
今回は、ネガティブマージンの使いどころについてのご紹介(2回目)です。
今回は、以下のようなデザインを実現するのにネガティブマージンを使用します。

表組み風になっていて、罫線でブロックを区切っていますが、最初と最後には罫線がないという意外とよくあるパターンのデザインです。
2. 表組み風レイアウトでネガティブマージンを使う
まず、HTML を普通に組んでみます。ここでは table ではなく dl を使っています。
<h1>ニュース</h1> <div class="news"> <dl> <dt>2010/08/11</dt> <dd>テキストが入ります。テキストが入ります。テキストが入ります。テキストが入ります。テキストが入ります。</dd> <dt>2010/08/11</dt> <dd>テキストが入ります。テキストが入ります。テキストが入ります。テキストが入ります。テキストが入ります。</dd> <dt>2010/08/11</dt> <dd>テキストが入ります。テキストが入ります。テキストが入ります。テキストが入ります。テキストが入ります。</dd> </dl> </div>
シンプルな HTML です。
ザックリとレイアウトした CSS はこちら
div.news {
font-size: 75%;
}
dl {
}
dt {
float: left;
clear: left;
width: 7em;
padding: 10px 0;
}
dd {
padding: 10px 0 10px 7em;
border-bottom: 1px #666 solid;
}
dt と dd を横並びにして、罫線は dd のボーダーにしています。
このままだと、以下のような表示になります。

だいたいいい感じですが、最後の罫線が不要です。
最後の dd にだけ id か class をつけて、 border: none; にしてしまう手もありますが、今回は HTML はそのままで最後の罫線だけを消します。
ここで、ネガティブマージンを使用します。
div.news {
overflow: hidden; /* エリアからはみ出したオブジェクトを非表示 */
font-size: 75%;
}
dl {
margin: 0 0 -1px; /* ここにネガティブマージン */
}
dt {
float: left;
clear: left;
width: 7em;
padding: 10px 0;
}
dd {
padding: 10px 0 10px 7em;
border-bottom: 1px #666 solid;
}
こうすることで、以下のような表示になります。

前回と同じ手法ですが、ネガティブマージンを使用すれば(IE6でも) HTML に無駄な id や class をつけなくても良いので、すっきりコーディングすることができます。



