Whisper | Webの忘備録 > CSS > float(フロート)したボックスを制御する方法
商品リストや、写真ギャラリーを作る時にボックスを作り一覧を表示させます。
これの難点は、ボックス毎に隙間を空ける為に、
一番端のボックスも同様に隙間があるため、余計な隙間を確保して
折り返しをする必要があります。
これの解決方法は
一番右端のボックスにclassで個別に「margin-right:0px」などすることで
回避をすることもできますが、もっとスマートに解決が行えます。
以下の図のように設定すると、右端のボックスはカラム落ちします。(設定前)
これに、ネガティブマージンを設定すると、カラム落ちせずに実現できます。(設定後)
<div id="goods"> <ul> <li> <dl> <dt><img src="CD1.jpg" width="50" height="50" /></dt> <dd>ここに商品名が入ります。</dd> </dl> </li> <li> <dl> <dt><img src="CD2.jpg" width="50" height="50" /></dt> <dd>ここに商品名が入ります。</dd> </dl> </li> <li> <dl> <dt><img src="CD3.jpg" width="50" height="50" /></dt> <dd>ここに商品名が入ります。</dd> </dl> </li> </ul> <div style="clear:both"></div> </div>
* { /* CSSのリセット */ margin: 0; padding: 0; } #goods { font-size: 12px; width: 290px; /* liのマージン左10px分300pxから差し引いた値 */ } #goods ul { list-style-type: none; width: 300px; margin-right: -10px; /* ここがポイント */ } #goods ul li { width: 90px; /* 商品個々のボックス幅 */ text-align: center; float: left; margin-right: 10px; margin-bottom: 10px; }