CSS float フロートの正しい使い方 回り込みと包み込む背景の作成方法

CSSフロートを理解しよう CSS
スポンサーリンク

今回は、「float」についてご紹介させて頂きます。

以前はグローバルメニューを作成するのによく使用されたプロパティですが、フレックスボックスやグリッドの登場でその使用頻度はかなり少なくなってきています。

但し、本来の使用目的である、画像を包み込むレイアウトでは使用する機会もありますので、基本的な使い方は頭に入れておきましょう。

スポンサーリンク

float使い方

基本的な使い方

HTML
  <body>
    <div class="box">floatを理解する</div>
    <p>
      Lorem ipsum dolor sit amet consectetur adipisicing elit. Beatae
      exercitationem odio sapiente sint iusto, et praesentium magni quod
      necessitatibus provident. Dolorem, obcaecati sed. Illo qui quasi, dolores
      repellat blanditiis omnis.
    </p>
    <p>
      Lorem ipsum dolor sit amet consectetur adipisicing elit. Autem explicabo
      ipsam assumenda vel ratione quos reiciendis sequi laudantium, omnis
      dolorem magni amet? Repellendus cumque delectus accusamus maiores eveniet
      dolore autem!
    </p>
    <p>
      Lorem ipsum dolor sit amet consectetur adipisicing elit. Maiores facere
      aperiam itaque provident, aliquam ullam odio perferendis earum? Voluptatum
      explicabo fuga modi commodi mollitia doloremque quo alias omnis saepe
      vero.
    </p>
  </body>
CSS
body {
  width: 90%;
  max-width: 900px;
  margin: 0 auto;
}
.box {
  width: 150px;
  height: 100px;
  background-color: rgb(5, 175, 118);
  border-radius: 5px;
  padding: 1em;
  color: white;
  font-weight: bold;
  border: 1px solid rgb(5, 175, 118);
}
学習の基本となる画面

まずはボックスと、幾つかの文章のあるサイトを作成します。

ボックスの右側に文章が回り込むようにするために、「float」を設定します。

CSS
.box {
  float: left;
  margin-right: 15px;
  width: 150px;
  height: 100px;
  background-color: rgb(5, 175, 118);
  border-radius: 5px;
  padding: 1em;
  color: white;
  font-weight: bold;
  border: 1px solid rgb(5, 175, 118);
}
float: left;を指定した画面

float: left;」でテキストを回り込ませて、「margin-right: 15px」でボックスとの余白を指定しています。

「float」がどのように機能しているのかを確認するために、最初のP要素にクラスを付けて、背景色を指定します。

CSS
.first {
  background-color: rgb(238, 203, 4);
  padding: 10px;
  color: #fff;
}
floatの機能を確認するために、最初のP要素の背景に色を付けてみます。

ボックスとの重なりを分かりやすくするために、ボックスの「margin-right」を「margin」に変更しています。

floatをクリアする

先程の表示では、2行目もボックスを回り込むようになっていました。

この流れを止めるには、「clear」プロパティを使用します。

2行目のP要素にクラスを付けて指定します。

CSS.clear {
  clear: left;
}
floatをクリアします。

2行目の回り込みが解除されました。

ボックスとテキストを包み込む背景の作成

先程までの表示では、最初のテキストの背景とボックスがずれて表示されていました。

ここではボックスとテキストを包み込むような背景を作成してみます。

HTML
    <div class="wrap">
      <div class="box">floatを理解する</div>
      <p class="first">
        Lorem ipsum dolor sit amet consectetur adipisicing elit. Beatae
        exercitationem odio sapiente sint iusto, et praesentium magni quod
        necessitatibus provident. Dolorem, obcaecati sed. Illo qui quasi,
        dolores repellat blanditiis omnis.
      </p>
    </div>

HTMLを少し書き換えます。

ボックスと最初のテキストを「div」で囲んで、クラスを付けます。

CSS
.wrap {
  background-color: rgb(238, 203, 4);
  padding: 10px;
  color: #fff;
}
.clear {
  clear: left;
}

先程P要素に指定した設定を「.wrap」に書き換えます。

2行目以降はクリアしておきます。

学習の基本となる画面です。

先程よりは良くなりましたが、まだ背景が完全にボックスを囲んではいません。

この問題を解決するには、以下の3つの方法があります。

clearfix

CSS
.wrap::after {
  content: "";
  clear: both;
  display: block;
}
clearfixを使ってレイアウトを整えます。

無事にボックスが背景色の中に収まりました。

ここでは、「clearfix」という方法を用いています。

疑似要素「::after」で空のボックス要素を作り、「clear:both;」で回り込みを解除しています。

つまりボックスと最初の一行の周りに他の要素が回り込まないようにボックスのブロックを作った感じです。

分かったような分からない説明ですが、疑似要素「::after」の後に、先程のCSSをそのまま書けばOKです。

overflow

CSS
.wrap {
  background-color: rgb(238, 203, 4);
  padding: 10px;
  color: #fff;
  overflow: auto;
}

「.wrap」に「overflow: auto;」と記述すると、先程と同じ表示になります。

本来は、テキストなどがはみ出した時にスクロールを表示させる機能のため、稀に正しく表示されない場合があります。

display: flow-root;

CSS
.wrap {
  background-color: rgb(238, 203, 4);
  padding: 10px;
  color: #fff;
  display: flow-root;
}

現在、最も推奨される方法です。

予期しない動作が起こることがありませんので、安心して使用することが出来ます。

スポンサーリンク

あとがき

幾つかの方法をご紹介させて頂きましたが、覚えておいて欲しいのは、「float」の基本的な使い方と、「display: flow-root;」の使い方です。

ここをしっかりと抑えておけば、「float」の使い方で迷うことは少なくなると思います。

今回も最後までお読み頂きありがとうございました。

タイトルとURLをコピーしました