[css]floatの回り込み解除を親要素で処理

floatの回り込み解除は基本的に解除したいところでclearを指定すると回り込みが解除されます。

下記の場合はh2のスタイルに clear: both; を記述することで回り込みが解除されます。

HTML:
  1. <img src="hoge.jpg" style="float: left" />回り込みテキスト 回り込みテキスト 回り込みテキスト
  2. <h2>後続テキスト後続テキスト後続テキスト。</h2>

しかしながら、floatした要素に関係のないh2のスタイルに記述することが不自然であり、また記述を忘れてしまうんです。

親要素のスタイルを変更

親要素であるdivのスタイルに zoom:100%; を記述するとIEでは、なぜか回り込みが解除されてしまいます。でも zoom は IE のみのため、firefox,opera等では使えません。

そこでfirefox,operaで使えてIEでは使えないdiv:after を 使って親要素に下記のようなスタイルを加えるとIE,firefox,opera で回り込みが解除されるんです。

CSS:
  1. div { zoom: 100%;}
  2. div:after { content: " "; clear: both; height: 0; display: block; visibility: hidden;}

ということで、「子要素内でfloatされても指定した要素の後は自動的にclearしてください」というスタイルをclass="gbox"でまとめて

CSS:
  1. /*-- grid box --*/
  2. .gbox       { zoom: 100%;}
  3. .gbox:after { content: " "; clear: both; height: 0; display: block; visibility: hidden;}
  4. .gbox .gL   { float: left;}
  5. .gbox .gR   { float: right;}
  6. .gbox .g12 { float: left; width: 49.9%;}
  7. .gbox .g13 { float: left; width: 33.2%;}
  8. .gbox .g23 { float: left; width: 66.6%;}
  9. .gbox .g14 { float: left; width: 24.9%;}
  10. .gbox .g34 { float: left; width: 74.9%;}

この場合class="gbox"を与えた要素の後は自動的に回りこみ解除されます。

sample

上記のcssをとりあえず埋め込んでおけばブログ記事内でも簡単に段組ができてしまいます。

HTML:
  1. <p class="gbox" style="width: 200px">   <img src="hoge.gif" class="gL" />回り込みテキスト 回り込みテキスト 回り込みテキスト
  2.  
  3. ここで自動的に回り込み解除
  4.  
  5. </p><p class="gbox">
  6. </p><p class="g14">.g14は1/4</p>
  7. <p class="g12">.g12は1/2 text text text text</p>
  8.  
  9.  
  10. ここで自動的に回り込み解除
  11.  
  12. <p class="gbox">
  13. </p><p class="g23">.g23は2/3</p>
  14. <p class="g13">.g13は1/3 text text text text</p>
  15.  
  16.  
  17. ここで自動的に回り込み解除

回り込みテキスト 回り込みテキスト 回り込みテキスト

ここで自動的に回り込み解除

.g14は1/4

.g12は1/2 text text text text

ここで自動的に回り込み解除

.g23は2/3

.g13は1/3 text text text text

ここで自動的に回り込み解除

classは class="content gbox"のように複数指定できるので便利かも

関連記事:

この記事は参考になりましたか? 1 Star2 Stars3 Stars4 Stars5 Stars 4.1 (20件)
Loading ... Loading ...

trackbacks & pingbacks (2)

  1. 2007/02/01 18:24:32 Dandelion
  2. 2007/04/07 05:17:01 Rif.2nd

コメントをどうぞ

You must be logged in to post a comment.