HTML CSS 講座 トップページへ

ホームページ作成 いまさらHTML,CSS講座

|  Home  |  ホームページ作成の知識  |  HTML 講座  |  HTML TABLE 講座  |  スタイルシート(CSS) 講座  |  携帯サイト 作成 講座  |
[HTMLテンプレートカテゴリ] [未分類カテゴリ]

いまさらHTML,CSS講座トップ > スタイルシート(CSS)講座インデックス > レイアウト floatプロパティ
様々なブックマークサービスがご利用頂けます。

レイアウト floatプロパティ

■ floatプロパティ
floatプロパティは、要素のボックスを左、または右に配置し、反対側に、要素に続く内容を回り込ませま。この一連の表示方法は、『 回り込み 』と言い換える事ができます。
  • none (回り込み(フロート)しない)
  • left 
    (要素のボックスを左揃え、続く内容が右から回り込みます。)
  • right 
    (要素のボックスを右揃え、続く内容が左から回り込みます。)
floatプロパティで、レイアウトを組む場合、いくつかの注意点があります。
  1. 2つ以上のボックスを表示する場合、外側にボックスを設け、その内側にボックスを内包するように記述します。
  2. floatプロパティを指定したボックスには、幅を必ず指定します。(CSS2の仕様です。)
  3. floatプロパティでレイアウトを組む場合、左右のボックスにfloatプロパティを指定すようにします。

    例えば、左ボックスにフロートを指定( float : left )し、右ボックスを回り込ませる場合、右ボックスにも同じ float : left を指定しておかないと、右ボックスが、左ボックスより大きくなると、floatプロパティ本来の働きである回り込み(左ボックスの下側にも回り込む)表示となります。

     表示例 新規ウィンドウが開きます。

  4. IEで float プロパティにおいて、margin プロパティは様々なバグがある為、floatプロパティを指定した要素には 0pxを指定するようにします。
  5. width、heightプロパティと、padding、borderプロパティは同時に指定しないようにします。

    これはボックスの幅や高さを算出するときにパディングやボーダーの指定値も含めてしまうため、親要素のサイズを超えてしまった場合に、本来左右にフロートされるべき要素が下に表示されてしまいます。

    このようなレイアウトの崩れを『カラム落ち』と言います。

     Mozillaのスクリーンショット

  6. 子要素の幅の和が親要素の幅を超えてしまうと、カラム落ちします。

     親要素 横幅 728px、左ボックス 228px、右ボックス 558px

  7. 左右のボックスの幅を絶対値で指定する場合、親要素にも左右のボックスの幅の和を指定します。

    親要素に左右の幅の和を指定しない場合、または、指定しても、親要素の幅を超えた場合で、ブラウザの表示範囲より大きなボックスになると、カラム落ちします。

  8. 左右のボックスの幅は、相対値で指定しないようにします。
    これは、ブラウザの表示領域に左右されてしまいますので、ウィンドウサイズによってはカラム落ちする事があります。

    親要素に絶対値で左右のボックスの和を指定する事で回避できます。

レイアウトの崩れない記述@
ソース  ソース head要素内又は、外部CSSファイル
* { margin : 0 ; padding : 0 ; }
body { color : #ffffff ; font : bold 12px ;}
#header { width : 728px ; }
.box_a { float : left ; width : 200px ; background : Teal ; }
.box_b { float : left ; width : 518px ; background : DarkSeaGreen ; }
ソース  ソース body要素内
<div id="header">
  <div class="box_a">
    box_a カラム
  </div>
  <div class="box_b" style="padding-left:10px">
    box_b<br>box_b カラム<br>内容<br>内容
  </div>
</div>
表示  表 示
新規ウィンドウで表示。

レイアウトの崩れない記述A

右ボックス( box_b )に、左ボックス( box_a )の幅と同じ値の marginを指定します。この場合、margin-left で指定します。

ソース  ソース head要素内又は、外部CSSファイル
* { margin : 0 ; padding : 0 ; }
body { color : #ffffff ; font : bold 12px ;}
#header { width : 728px ; }
.box_a { float : left ; width : 150px ;background : Teal ; }
.box_b { margin-left : 150px ; background : DarkSeaGreen ; }
ソース  ソース body要素内
<div id="header">
  <div class="box_a">
    box_a カラム
  </div>
  <div class="box_b" style="padding-left:10px">
    box_b<br>box_b カラム<br>内容<br>内容
  </div>
</div>
表示  表 示
新規ウィンドウで表示。
■ 回り込みの解除 clearプロパティ
floatプロパティで指定された内容の回り込みを解除します。
レイアウトにおいて、clearプロパティは、フロートを解除したいボックスに指定し、そのボックスを表示させます。
  • none (回り込み(フロート)を解除しません )
  • left (float : left を解除します)
  • right (float : right を解除します)
  • both (left、right 両方解除します)
レイアウトの崩れない記述 A に、naviボックスを追加します。
ソース  ソース head要素内又は、外部CSSファイル
* { margin : 0 ; padding : 0 ; }
body { color : #ffffff ; font : bold 12px ;}
#header { width : 728px ; }
.box_a { float : left ; width : 150px ; background : Teal ; }
.box_b { margin-left : 150px ; background : DarkSeaGreen ; }
#navi { clear : both ; width : 728px ; background : LightSeaGreen ; }
ソース  ソース body要素内
<div id="header">
  <div class="box_a">
    box_a カラム
  </div>
  <div class="box_b" style="padding-left:10px">
    box_b<br>box_b カラム<br>内容<br>内容
  </div>
<div id="navi">ナビゲーション navi</div> </div>
表示  表 示
新規ウィンドウで表示。
注意点として、clearプロパティを指定したボックスには、margin-top を指定しないようにします。
これは、IE5.0と、6の初期バージョンのバグですが、上の例ですと、box_a _b と、navi との間に余白を設けたい場合、navi に margin-top を指定すると、box_b が、box_a よりサイズが大きいので、box_a の下にも回りこんでしまいます。
このバグを回避するには、box_a _b 両ボックスに margin-bottom を指定します。

(C) いまさらHTML CSS講座 2002-2008 All right reserved