Whisper | Webの忘備録 > CSS > float(フロート)したボックスを制御する方法
フロートして横並びにしたボックスにコメントを書く場合など、
高さが揃わなくなる時があります。
具体的には以下のような感じ。
heightで高さを指定してない為、文字数で高さが伸びてしまっています。
高さを固定すればいいのですが‥理想としては高さが一番長いものに
高さが揃う方法。
対処方法は以下のようにします。
その1 javascriptを使う方法
TO-Rさんのサイトで配布をしているheightLine.jsをダウンロードします。
<script type="text/javascript" src="/js/heightLine.js"></script>
<div class="heightLine"></div>
無事設置できると、以下のように一番高さの高いボックスに整います。
詳しくはTO-Rさんのサイトをご覧ください。
その2 画像を使い表現する方法
JavaScriptの使用は避けたい、環境により使えないという場合など。
先ほどの画像を例にすると
以下のような画像を作成することで、背景の高さを擬似的に揃えることができます。
視覚的に見やすくするために高さを7px確保していますが、実際には高さ1pxで大丈夫です。
<div id="wrapper"> <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="CD1.jpg" width="50" height="50" /></dt> <dd>ここに商品名が入ります。</dd> </dl> </li> <li> <dl> <dt><img src="CD1.jpg" width="50" height="50" /></dt> <dd>ここに商品名が入ります。</dd> </dl> </li> </ul> <div style="clear:both"></div> </div> </div>
* { /* CSSのリセット */ margin: 0; padding: 0; } #wrapper { background-color: #ffb03b; width: 357px; padding-top: 6px; padding-right: 0px; padding-bottom: 6px; padding-left: 6px; } #goods { font-size: 12px; width: 357px; background-color: #ffb03b; background-image: url(css04-2.gif); background-repeat: repeat-y; } #goods ul { list-style-type: none; width: 357px; } #goods ul li { width: 113px; text-align: center; float: left; margin-right: 6px; margin-bottom: 10px; display: inline; }
上記のような要領で画像を背景に設置し、Y軸方向にリピートさせます。
動作サンプルはこちら
少し工夫をするとボーダー有りでも作れます。
また、その他の方法として
jQueryを使う方法、力技でCSSのみで実現する方法もあるようです。
用途や目的、条件によって使い分けをするとよさそうです。