目次
float プロパティは、要素が浮動する方向を定義します。 従来、このプロパティは常に画像に適用され、テキストが画像の周りを回り込むようにしていましたが、CSS では任意の要素をフローティングにすることができます。 フローティング要素は、要素自体に関係なく、ブロック レベルのボックスを生成します。
置換されていない浮動要素の場合は、幅を明示的に指定します。それ以外の場合は、可能な限り狭くなります。
注: 行の上にフローティング要素用のスペースがほとんどない場合、要素は次の行にスキップされ、行に十分なスペースができるまでこのプロセスが続行されます。
float 属性は、コンテンツの配置と書式設定に使用されます。たとえば、コンテナ内のテキストの左側に画像をフロート表示する場合などです。
float 属性には、次のいずれかの値を指定できます。
最も単純な使用法は、float 属性を使用して、画像を囲むテキストを (新聞上で) 効果を実現できることです。
次の例では、画像がテキスト内の右側にフローティングするように指定しています。
img {
float: right;
}
次の例では、画像がテキスト内で左に配置されるように指定します。
img {
float: left;
}
次の例では、画像はテキスト内に表示された場所に表示されます (float: none;):
img {
float: none;
}
clear 属性は、どの要素がクリアされる要素の隣にどの側にフロートできるかを指定します。
clear 属性には、次のいずれかの値を指定できます。
clear 属性の最も一般的な使用法は、要素で float 属性を使用した後です。
フロートをクリアするときは、クリアとフロートを一致させる必要があります。要素が左側にフロートされている場合は、左側もクリアされる必要があります。 フローティングされた要素は引き続きフローティングされますが、クリアされた要素はその下に表示されます。
次の例では、左側のフロートをクリアします。 (div の) 左側では浮動要素が許可されないことを示します。
div {
clear: left;
}
要素がその要素を含む要素よりも高く、フローティングされている場合、その要素はコンテナの外に「オーバーフロー」します。
この問題は、含まれる要素に overflow: auto; を追加することで修正できます。
.clearfix {
overflow: auto;
}
オーバーフロー: マージンとパディングを制御できる限り、自動クリアフィックスは適切に機能します (そうでない場合は、スクロールバーが表示される可能性があります)。 ただし、新しい最新の Clearfix ハックは使用するのがはるかに安全であり、次のコードはほとんどの Web サイトで使用されています。
.clearfix::after {
content: "";
clear: both;
display: table;
}
::after 疑似要素については後の章で学習します。
float 属性を使用すると、コンテンツ ボックスを簡単に並べてフローティングできます。
* {
box-sizing: border-box;
}
.box {
float: left;
width: 33.33%; /* 3 つのボックス (4 つのボックスは 25% を使用、2 つのボックスは 50% を使用、など) */
padding: 50px; /* 必要に応じて画像間にスペースを追加します */
}
3 つのフローターを並べて簡単に作成できます。 ただし、各ボックスの幅を広げるもの (パディングやボーダーなど) を追加すると、ボックスが壊れます。 box-sizing 属性を使用すると、ボックスの全体の幅 (および高さ) にパディングと境界線を含めることができ、パディングが壊れることなくボックス内に留まることが保証されます。



ボックスのグリッドを使用して画像を並べて表示することもできます。
.img-container {
float: left;
width: 33.33%; /* 3 つのボックス (4 つのボックスは 25% を使用、2 つのボックスは 50% を使用、など) */
padding: 5px; /* 必要に応じて画像間にスペースを追加します */
}
上の例では、ボックスを同じ幅で並べてフローティングする方法を学びました。 しかし、同じ高さのフローティングボックスを作成するのは簡単ではありません。 ただし、簡単な解決策は、以下の例のように、固定の高さを設定することです。
Some content, some content, some content
Some content, some content, some content
Some content, some content, some content
Some content, some content, some content
.box {
height: 500px;
}
ただし、そうすると柔軟性が失われます。 箱に常に同じ量の中身が入っていることが保証できれば、それで問題ありません。 しかし、多くの場合、内容は異なります。 上記の例を携帯電話で試してみると、2 番目のボックスの内容がボックスの外側に表示されることがわかります。 ここで CSS3 Flexbox が役立ちます。ボックスを最長のボックスと同じ長さに自動的に引き伸ばすことができるためです。
Flexbox を使用してフレキシブル ボックスを作成する:
Flexbox の唯一の問題は、Internet Explorer 10 以前では動作しないことです。 Flexbox レイアウト モジュールの詳細については、CSS Flexbox の章をご覧ください。
| 属性 | 説明 |
|---|---|
| box-sizing | は、要素の幅と高さの計算方法、つまりパディングとボーダーを含めるかどうかを定義します。 |
| clear | は、どの要素がクリアされた要素の隣にどの側にフロートできるかを指定します。 |
| float | 要素がどのように浮動するかを指定します。 |
| overflow | は、コンテンツが要素のボックスをオーバーフローした場合に何が起こるかを指定します。 |
| overflow-x | 要素のコンテンツ領域からはみ出した場合に、コンテンツの左端/右端を処理する方法を指定します。 |
| overflow-y | 要素のコンテンツ領域からはみ出す場合に、コンテンツの上端/下端を処理する方法を指定します。 |