コーディング Web制作 CSS

【CSS】floatを使って画像に対してテキストを回り込ませる方法

【CSS】floatを使って画像に対してテキストを回り込ませる方法
画像にテキストを回り込ませるのってどうやるの?

個人的には実務で年に1回見るかどうかという頻度ですが、実装方法を知らないと『???』となること間違いなしだと思うので、ここに書いておきたいと思います。

効率よくコーディングしたい人はこちら

floatを使って画像に対してテキストを回り込ませる方法

『画像に対してテキストを回り込ませる』とはどういう事か?と思うかも知れませんが、文章で解説するより見た方が早いと思うので一旦こちらを見て下さい。

See the Pen
float
by junpei (@junpei-sugiyama)
on CodePen.

左上のHTMLかCSSをクリックすると画面幅が狭くなりますが、それに応じてテキストも動きます。

右上の『EDIT ON CODEPEN』をクリックすると全画面になるので、画面幅を変えながら確認すると分かりやすいと思います。

これはこの後解説するfloatというCSSを使っているのですが、floatを使わないとこうなります。

See the Pen
float未使用
by junpei (@junpei-sugiyama)
on CodePen.

 

コード解説

それではコードを見てみます。

<div class="container">
  <div class="img-wrapper">
    <img src="画像パス" alt="">
  </div>
  <div class="text">
    <p>Lorem ipsum・・・</p>
    <p>テキストが入ります・・・</p>
  </div>
</div>
.img-wrapper {
  float: left; /* 画像を左にする場合 */
  margin-right: 20px; /* テキストとの余白 */
  max-width: 500px;
  width: 50vw;
}
p {
  font-size: 20px;
  line-height: 1.5;
}
img {
  height: auto;
  width: 100%;
}
.text {
  padding: 20px;
}

ポイントは3点。

  • HTMLはimgを最初に書く
  • img(またはimgの親要素)にfloatを書く
  • テキストとの余白はimg(またはimgの親要素)にmargin(paddingでも余白は作れます)

特に最初の『HTMLはimgを最初に書く』はハマりやすいポイントかと思うのでご注意下さい。

あとは『テキストを回り込ませる』なのでテキストにfloatを書きたくなりますが、書くのは画像の方です(『画像を回り込ませる』という言い方をする方もいます)

上記は画像を左にする場合で、右にする場合は少しコードを変えます。

.img-wrapper {
  float: right; /* 画像を右にする場合 */
  margin-left: 20px; /* テキストとの余白 */
}

See the Pen
float(画像右)
by junpei (@junpei-sugiyama)
on CodePen.

 

2つ目の文章だけ回り込ませない方法

先ほどはpタグが2つなので2つの文章が書いてありましたが、2つ目の文章は回り込ませたくない場合はどうすればいいでしょうか?

その場合は2つ目のpタグにclear: both;を書けばOKです。

See the Pen
Untitled
by junpei (@junpei-sugiyama)
on CodePen.

floatは昔は横並びにしたい時に使っていましたが、現在ではテキストの回り込みくらいでしか使う機会はないかと思いますが、たまーに今回のようなデザインもあるので頭の片隅に覚えておきましょう。

 

コーディング案件の単価と作業効率を上げる!

Brain総合ランキング1位獲得 & 3日で500部突破

累計670部突破

クチコミ約370件
(平均スコア

今だけ!5つの無料特典あり🎁

👇画像をクリック

  • この記事を書いた人

じゅんぺい

タイ・バンコク在住のWeb制作フリーランス兼ブロガー▶︎37歳からWeb制作を開始▶︎コーディングとWordPressのオリジナルテーマ制作でこれまで80件以上納品▶︎Web制作中心の当ブログは月8.4万PV▶︎Twitterのフォロワーは5700人▶︎コーディングとWordPressのコンテンツを販売し、3日で500部突破&250万円&人気1位獲得 → 累計390万円突破

-コーディング, Web制作, CSS
-