リスト<li>を使ってバナーを横並びにしたいと思います。
- コンテンツ幅:620px
- バナーサイズ:200px × 40px
- バナー同士のスキマ:10px
HTML
<div id="contents"> <ul> <li><a href="/"><img src="img/bnr01.gif" alt="バナー01" /></a></li> <li><a href="/"><img src="img/bnr02.gif" alt="バナー02" /></a></li> <li><a href="/"><img src="img/bnr03.gif" alt="バナー03" /></a></li> </ul> <!-- /#contents --></div>
CSS
#contents {
width: 620px;
}
#contents ul {
zoom: 1;
}
#contents ul:after { content:"."; display: block; height:0px; clear:both; line-height:0; visibility:hidden; }
#contents li {
float: left;
margin: 0 10px 0 0;
}
このとき、バナー03の<li>の右マージン10pxがcontents幅をはみ出してしまうため、通常ではバナー03がfloat落ちします。
それを防ぐために、バナー03の<li>にclassを追加し、marginを無効化します。

HTML
<div id="contents"> <ul> <li><a href="/"><img src="img/bnr01.gif" alt="バナー01" /></a></li> <li><a href="/"><img src="img/bnr02.gif" alt="バナー02" /></a></li> <li class="no-margin"><a href="/"><img src="img/bnr03.gif" alt="バナー03" /></a></li> </ul> <!-- /#contents --></div>
CSS
#contents {
width: 620px;
}
#contents ul {
zoom: 1;
}
#contents ul:after { content:"."; display: block; height:0px; clear:both; line-height:0; visibility:hidden; }
#contents li {
float: left;
margin: 0 10px 0 0;
}
#contents li.no-margin {
margin: 0;
}
しかし、バナーサイズが変わるかもしれないし、順序が入れ替わるかもしれない状態で、classをつけたりとったりするのはめんどうです。
そのため、<li>にclassを付加せずにfloat落ちを防ぎたいと思います。
HTML
<div id="contents"> <ul> <li><a href="/"><img src="img/bnr01.gif" alt="バナー01" /></a></li> <li><a href="/"><img src="img/bnr02.gif" alt="バナー02" /></a></li> <li><a href="/"><img src="img/bnr03.gif" alt="バナー03" /></a></li> </ul> <!-- /#contents --></div>
CSS
#contents {
overflow: hidden;
width: 620px;
}
#contents ul {
zoom: 1;
width: 630px;
}
#contents ul:after { content:"."; display: block; height:0px; clear:both; line-height:0; visibility:hidden; }
#contents li {
float: left;
margin: 0 10px 0 0;
}
<ul>に内容物の幅を指定、その親要素にはみ出すものは表示しない指定をします。
この指定により、バナー03の<li>がfloat落ちするのを防ぐことができます。







最近のコメント