【保存版】CSS float のクリア方法を完全網羅!初心者でも分かるように徹底解説

2024-04-02

CSS float をクリアする最善の方法

float をクリアする とは、浮動要素の後に配置される要素が、浮動要素の影響を受けないようにする 処理です。

float をクリアする方法はいくつかあります。

clear プロパティを使用する

最も一般的な方法は、clear プロパティを使用することです。clear プロパティには、以下の値を指定できます。

  • both: 左右両方の浮動要素の影響を受けないようにします。

例:

.container {
  width: 500px;
}

.float-left {
  float: left;
  width: 200px;
}

.clear {
  clear: both;
}

HTML:

<div class="container">
  <div class="float-left">
    これは左側に浮動する要素です。
  </div>
  <div class="clear">
    これはクリアされた要素です。
  </div>
</div>

overflow: hidden; を使用する

親要素に overflow: hidden; を指定すると、その要素内の浮動要素の影響を受けないようにすることができます。

.container {
  width: 500px;
  overflow: hidden;
}

.float-left {
  float: left;
  width: 200px;
}
<div class="container">
  <div class="float-left">
    これは左側に浮動する要素です。
  </div>
</div>

display: flow-root; を使用する

.container {
  width: 500px;
  display: flow-root;
}

.float-left {
  float: left;
  width: 200px;
}
<div class="container">
  <div class="float-left">
    これは左側に浮動する要素です。
  </div>
</div>

clearfix は、float をクリアするための擬似クラスです。clearfix を使用すると、コードを簡潔に書くことができます。

.clearfix::after {
  content: "";
  display: table;
  clear: both;
}
<div class="clearfix">
  <div class="float-left">
    これは左側に浮動する要素です。
  </div>
</div>

height を使用する

.container {
  width: 500px;
  height: 100px;
}

.float-left {
  float: left;
  width: 200px;
}
<div class="container">
  <div class="float-left">
    これは左側に浮動する要素です。
  </div>
</div>

どの方法を使用するのが最適かは、状況によって異なります。 以下に、それぞれの方法のメリットとデメリットをまとめます。

方法メリットデメリット
clear プロパティ簡単に使えるコードが冗長になる
overflow: hidden;コードが簡潔になる親要素の高さを設定する必要がある
display: flow-root;コードが簡潔になるブラウザのサポート状況が限定される
clearfixコードが簡潔になる古いブラウザでは動作しない
height親要素の高さを固定できる親要素の高さを事前に知っておく必要がある
  • [CSS floatの使い方を解説!3つの解除方法も完全マスター |



clear プロパティを使用する

<div class="container">
  <div class="float-left">
    これは左側に浮動する要素です。
  </div>
  <div class="clear">
    これはクリアされた要素です。
  </div>
</div>
.container {
  width: 500px;
}

.float-left {
  float: left;
  width: 200px;
}

.clear {
  clear: both;
}

overflow: hidden; を使用する

<div class="container">
  <div class="float-left">
    これは左側に浮動する要素です。
  </div>
</div>
.container {
  width: 500px;
  overflow: hidden;
}

.float-left {
  float: left;
  width: 200px;
}

display: flow-root; を使用する

<div class="container">
  <div class="float-left">
    これは左側に浮動する要素です。
  </div>
</div>
.container {
  width: 500px;
  display: flow-root;
}

.float-left {
  float: left;
  width: 200px;
}

clearfix を使用する

<div class="clearfix">
  <div class="float-left">
    これは左側に浮動する要素です。
  </div>
</div>
.clearfix::after {
  content: "";
  display: table;
  clear: both;
}

.float-left {
  float: left;
  width: 200px;
}

height を使用する

<div class="container">
  <div class="float-left">
    これは左側に浮動する要素です。
  </div>
</div>
.container {
  width: 500px;
  height: 100px;
}

.float-left {
  float: left;
  width: 200px;
}



CSS float をクリアするその他の方法

position: absolute; を使用する

子要素に position: absolute; を指定すると、親要素の基準点から絶対位置で配置することができます。

<div class="container">
  <div class="float-left">
    これは左側に浮動する要素です。
  </div>
  <div class="clear">
    これはクリアされた要素です。
  </div>
</div>
.container {
  width: 500px;
}

.float-left {
  float: left;
  width: 200px;
}

.clear {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
}

flexbox は、要素を柔軟にレイアウトするためのレイアウトシステムです。

<div class="container">
  <div class="float-left">
    これは左側に浮動する要素です。
  </div>
  <div class="clear">
    これはクリアされた要素です。
  </div>
</div>
.container {
  display: flex;
}

.float-left {
  float: left;
  width: 200px;
}

.clear {
  flex: 1 1 auto;
}

grid を使用する

grid は、要素を2次元グリッドレイアウトに配置するためのレイアウトシステムです。

<div class="container">
  <div class="float-left">
    これは左側に浮動する要素です。
  </div>
  <div class="clear">
    これはクリアされた要素です。
  </div>
</div>
.container {
  display: grid;
}

.float-left {
  float: left;
  width: 200px;
}

.clear {
  grid-area: 1 / 2 / span 1 / span 1;
}

以下に、それぞれの方法のメリットとデメリットをまとめます。

方法メリットデメリット
clear プロパティ簡単に使えるコードが冗長になる
overflow: hidden;コードが簡潔になる親要素の高さを設定する必要がある
display: flow-root;コードが簡潔になるブラウザのサポート状況が限定される
clearfixコードが簡潔になる古いブラウザでは動作しない
height親要素の高さを固定できる親要素の高さを事前に知っておく必要がある
position: absolute;複雑なレイアウトを作成できる子要素の配置が複雑になる
flexbox柔軟なレイアウトを作成できる古いブラウザでは動作しない
grid2次元グリッドレイアウトを作成できる古いブラウザでは動作しない

一般的な的には、clear プロパティを使用するのが最も簡単で安全な方法です。 ただし、コードを簡潔にしたい場合は、clearfixflexbox などの他の方法を使用することを検討しても良いでしょう。

以下は、それぞれの方法の使用例です。

  • clear プロパティ: シンプルなレイアウトで、float をクリアする必要がある場合
  • overflow: hidden;: 親要素の高さを固定したい場合
  • display: flow-root;: 親要素内に複数の浮動要素があり、その高さを自動的に調整したい場合
  • clearfix: コードを簡潔にしたい場合
  • height: 親要素の高さを固定し、その中に浮動要素を配置したい場合
  • position: absolute;: 複雑なレイアウトを作成したい場合
  • flexbox: 柔軟なレイアウトを作成したい場合
  • grid: 2次元グリッドレイアウトを作成したい場合

**どの方法を使うべきか迷った場合は、上記のメリットとデメリットを参考に、状況


css


アニメーションやスクロールエフェクトも! Javascript と CSS でできること

実際には、以下の 2 つの意味合いがあります。CSS のプロパティ値に Javascript を直接記述する例:この方法では、変数や関数など Javascript の機能を活かして、動的に CSS を変化させることができます。Javascript を使って CSS プロパティを操作する...


CSSで背景画像データをBase64として埋め込む:メリットとデメリット

メリットHTTPリクエストの削減: 画像ファイルが別途存在しないため、ページロード時に必要なリクエスト数が減少し、読み込み速度が向上します。キャッシュの改善: 画像データがCSSファイル内に含まれているため、ブラウザは画像を個別にキャッシュする必要がなくなり、全体的なキャッシュ効率が向上します。...


レスポンシブWebデザインに役立つ!CSSメディアクエリで2つの幅を指定するテクニック

従来のメディアクエリによる幅の指定従来のメディアクエリでは、min-widthやmax-widthプロパティを使用して、デバイスの幅に基づいてスタイルを適用していました。例えば、以下のコードは、幅が600px以下のデバイスにのみスタイルを適用します。...


【CSSレイアウトの罠】width: 100%のinput要素がはみ出す? 原因と解決策を図解付きで解説

width: 100% を設定した input 要素が、親要素の境界線を超えて表示されることがあります。これは、input 要素がデフォルトで box-sizing: border-box を使用するため、パディングと境界線が要素の幅に含まれるためです。...