【CSS】ネガティブマージンの使いどころ その1 パンくずリスト編

今さらながら「ヱヴァンゲリヲン新劇場版:破」を DVD で見まして、 ヱヴァ:Q 見るまでこりゃ死ねないな、と思った sakai です。序破急だから急かと思いきや Q ってところが意味深ですよね…
CSS で margin にマイナスの値を指定する、通称ネガティブマージンの使いどころについて、何回かにわけてご紹介します。(先日の CSS Nite でデモをした内容の再紹介です)
今回は「パンくずリスト」のコーディングでのネガティブマージンの使いどころです。
1. パンくずリストでネガティブマージンを使う
まず HTML で普通にパンくずリストを組んでみます。
<div id="topiPath"> <ol> <li><a href="/">ホーム</a></li> <li><a href="/wear/">ウェア</a></li> <li><a href="/wear/tops/">トップス</a></li> <li>バシャログオリジナル チームTシャツ(赤)</li> </ol> </div>
とてもシンプルな HTML です。「>」のマークは背景画像で表現します。
ザックリとレイアウトした CSS はこちら
div#topicPath {
}
div#topicPath ol {
}
div#topicPath li {
float: left;
padding: 0 10px 0 15px;
background: url(hoge.gif) no-repeat 0 50%;
}
li の左側に「>」の画像を表示するように指定しています。
このままだと、以下のような表示になります。

「ホーム」の左側に出ている「>」と余白が不要です。
ここで、ネガティブマージンを使います。
div#topicPath {
}
div#topicPath ol {
margin: 0 0 0 -15px; /* ここにネガティブマージン */
}
div#topicPath li {
float: left;
padding: 0 10px 0 15px;
background: url(hoge.gif) no-repeat 50% 100%;
}
すると、以下のような表示になります。

li に指定された 15px 分の padding-left に対して、ol の margin-left に -15px のネガティブ値を指定することで、「ホーム」の位置が期待通りの位置になりました。
ただ、このままだとエリアの外に「>」が見えてしまっているので、これを overflow: hidden; で非表示にします。
div#topicPath {
overflow: hidden; /* エリアからはみ出したオブジェクトを非表示 */
}
div#topicPath ol {
margin: 0 0 0 -15px;
}
div#topicPath li {
float: left;
padding: 0 10px 0 15px;
background: url(hoge.gif) no-repeat 50% 100%;
}
これで、以下のような表示になります。

このようにネガティブマージンを上手く使ってあげれば、例えば「ホーム」の li にだけ id や class をつけたりなどしなくても、スッキリとコーディングすることができます。



