HOME>WEBプログラム覚書>CSSハック:clearfix

CSSハック:clearfix

CSSによるレイアウトをおこなった場合、floatを利用することはスタンダードな手段だ。ところが親コンテナの中で子コンテナをfloatしてやると親コンテナの高さがおかしなことになる。

サンプル

id="clearFix"

id="cfLeft"

clearfixのテスト。左側に寄せるコンテンツ

id="cfRight"

clearfixのテスト。右側に寄せるコンテンツ

親コンテナに背景がある場合、背景が切れることになりその対策として下記のような.clearクラスをbrなどにくっつけてfloat解除をしていた。

サンプル

CSS

  1. .clear {
  2.     clear: both;
  3. }
  4.  

HTML

  1. <div id="clearFix">
  2.     <p>id="clearFix"</p>
  3.     <div id="cfLeft">
  4.     <p>float: left;</p>
  5.     <p>clearfixのテスト。左側に寄せるコンテンツ</p>
  6.     </div>
  7.  
  8.     <div id="cfRight">
  9.     <p>float: right;</p>
  10.     <p>clearfixのテスト。右側に寄せるコンテンツ</p>
  11.     </div>
  12.  
  13.     <br class="clear" />
  14.  
  15. </div>
  16.  

実行結果

id="clearFix"

float: left;

clearfixのテスト。左側に寄せるコンテンツ

float: right;

clearfixのテスト。右側に寄せるコンテンツ


floatがクリアされ、背景が表示されるので結果としては問題ないが、(x)HTMLに余分なソースを記述することになりちょっと気持ちが悪い。

そこでclearfixというCSSハックを利用する。

CSS

  1. clearFix {
  2.     zoom:1;/*for IE 5.5-7*/
  3. }
  4.  
  5. clearFix:after {/*for modern browser*/
  6.     content:".";
  7.     display: block;
  8.     height:0px;
  9.     clear:both;
  10.     visibility:hidden;
  11. }
  12.  

clearfix実行結果

id="clearFix"

float: left;

clearfixのテスト。左側に寄せるコンテンツ

float: right;

clearfixのテスト。右側に寄せるコンテンツ

上記以外にも書き方は多数ある模様。

投稿日 2007年10月29日 21:39
カテゴリ HTML/CSS
タグ CSSハック
トラックバック URL http://www.kantenna.com/cgi-bin/mt504/mt-tb.cgi/1125

コメント

コメントする
Name
Email Address
URL