CSS - float
概要
| 属性名 | float |
|---|---|
| 値 | none | left | right |
| 初期値 | none |
| 適用可能要素 | すべての要素 |
| 継承 | 継承しない |
| メディア | visual |
| アニメーション | 不可 |
| サポート | https://caniuse.com/mdn-css_properties_float |
説明
画像などの表示位置を指定します。left や right を指定すると、テキストがその周りを回り込むように表示されます。回り込みを解除するには clear を用います。
| 値 | 説明 |
|---|---|
| none | 回り込みを行いません。 |
| left | 左端に寄せ、右側にテキストを回りこませます。 |
| right | 右端に寄せ、左側にテキストを回りこませます。 |
使用例
CSS
.float-left { float: left; }
.float-right { float: right; }
.clear-left { clear: left; }
.clear-right { clear: right; }
.clear-both { clear: both; }
HTML
<div style="width:500px; border:1px solid gray; margin:1em"> 通常の画像とテキストの関係はこの様になります。 <img src="../../image/yuki5.gif" alt=""> 画像もテキストの一部として、ベースラインを揃えて表示されます。 </div> <div style="width:500px; border:1px solid gray; margin:1em"> <img src="../../image/yuki5.gif" alt="" class="float-left"> <div>このテキストは左側で回りこんでいます。</div> <div>このテキストも左側で回りこんでいます。</div> <div class="clear-left">このテキストは左側の回りこみを解除しました。</div> </div> <div style="width:500px; border:1px solid gray; margin:1em"> <img src="../../image/yuki5.gif" alt="" class="float-right"> <div>このテキストは右側で回りこんでいます。</div> <div>このテキストも右側で回りこんでいます。</div> <div class="clear-right">このテキストは右側の回りこみを解除しました。</div> </div> <div style="width:500px; border:1px solid gray; margin:1em"> <img src="../../image/yuki5.gif" alt="" class="float-left"> <img src="../../image/yuki5.gif" alt="" class="float-right"> <div>このテキストは両側で回りこんでいます。</div> <div>このテキストも両側で回りこんでいます。</div> <div class="clear-both">このテキストは両側の回りこみを解除しました。</div> </div>
表示
通常の画像とテキストの関係はこの様になります。
画像もテキストの一部として、ベースラインを揃えて表示されます。
画像もテキストの一部として、ベースラインを揃えて表示されます。
このテキストは左側で回りこんでいます。
このテキストも左側で回りこんでいます。
このテキストは左側の回りこみを解除しました。
このテキストは右側で回りこんでいます。
このテキストも右側で回りこんでいます。
このテキストは右側の回りこみを解除しました。
このテキストは両側で回りこんでいます。
このテキストも両側で回りこんでいます。
このテキストは両側の回りこみを解除しました。
回り込みの解除
テキストの回り込みを解除するには clear を用いますが、回り込みを解除する次の要素に対して clear:both を指定しなくてはならないというのは好ましくありません。
HTML
<div> <img src="../../image/yuki5.gif" alt="" class="float-left"> <div>このテキストは左側で回りこんでいます。</div> </div> <div style="clear:both">このテキストは回り込みを解除して表示したい。</div>
表示
このテキストは左側で回りこんでいます。
このテキストは回り込みを解除して表示したい。
Clearfix による回り込み解除
この問題を解決するために Clearfix という技法が生み出されました。回り込みを含む要素の末尾に見えない . を追加し、その要素に対して clear:both を指定する方法です。
CSS
.clearfix::after {
content: ".";
display: block;
height: 0;
clear: both;
visibility: hidden;
}
HTML
<div class="clearfix"> <img src="../../image/yuki5.gif" alt="" class="float-left"> <div>このテキストは左側で回りこんでいます。</div> </div> <div>このテキストは回り込みを解除して表示したい。</div>
表示
このテキストは左側で回りこんでいます。
このテキストは回り込みを解除して表示したい。
Contain による回り込み解除
IE に未対応でよいなら、contain を使用する方法もおススメです。
CSS
.contain-content { contain: content; }
HTML
<div class="contain-content"> <img src="../../image/yuki5.gif" alt="" class="float-left"> <div>このテキストは左側で回りこんでいます。</div> </div> <div>このテキストは回り込みを解除して表示したい。</div>
表示
このテキストは左側で回りこんでいます。
このテキストは回り込みを解除して表示したい。
flow-root による回り込み解除
こちらも IE 未サポートの機能ですが、display: flow-root によって回り込みを解除することもできます。
CSS
.flow-root { display: flow-root; }
HTML
<div class="flow-root"> <img src="../../image/yuki5.gif" alt="" class="float-left"> <div>このテキストは左側で回りこんでいます。</div> </div> <div>このテキストは回り込みを解除して表示したい。</div>
表示
このテキストは左側で回りこんでいます。
このテキストは回り込みを解除して表示したい。
関連項目
clear, display, containリンク
- https://developer.mozilla.org/ja/docs/Web/CSS/float
- http://www.w3.org/TR/CSS1/#float
- https://w3c.github.io/csswg-drafts/css2/#propdef-float
- http://www.w3.org/TR/css-page-floats-3/#float-property
- https://w3c.github.io/csswg-drafts/css2/#propdef-float
Copyright (C) 1997-2016 杜甫々
初版:1997年7月27日、最終更新:2016年5月8日
https://www.tohoho-web.com/css/prop/float.htm