floatを使った回り込み

floatの使い方

floatとは?
  • floatを指定した要素が「浮いた状態」になる特性です
floatの使い方
  • 横並びにしたい要素に対して、float: 値;を指定して使用します
  • 値に記述するのは、以下のような「方向」を示すワードです

指定内容
left 横並びにした要素を左へ寄せる
right 横並びにした要素を右へ寄せる
none (初期値)横並びの配置を指定しない

floatを使った回り込み

  • 「回り込み」という言葉は、インラインレベル要素のfloatに適用されます
  • 例えば、p要素内の先頭の文字と同じ扱いの画像に「float」を設定すると、それに続く p要素内の文字が float している画像の後ろに続いて並ぼうとします。それを、「画像の後ろに文字が回り込んでいる」と表現します

1つめの段落のテキストです。このテキストが画像の横に回り込みます。このテキストが画像の横に回り込みます。

2つめの段落のテキストです。このテキストが画像の横に回り込みます。このテキストが画像の横に回り込みます。

3つめの段落のテキストです。このテキストが画像の横に回り込みます。このテキストが画像の横に回り込みます。

4つめの段落のテキストです。このテキストが画像の横に回り込みます。このテキストが画像の横に回り込みます。


《仕上がりイメージ》

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>floatを使ったレイアウト</title>
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<div class="container">

  <p>
  <img src="img/photo.jpg" alt="サンプル画像">
  <strong>1つめの段落</strong>のテキストです。このテキストが画像の横に回り込みます。このテキストが画像の横に回り込みます。
  </p>

  <p>
  <strong>2つめの段落</strong>のテキストです。このテキストが画像の横に回り込みます。このテキストが画像の横に回り込みます。
  </p>

  <p>
  <img src="img/photo.jpg" alt="サンプル画像">
  <strong>3つめの段落</strong>のテキストです。このテキストが画像の横に回り込みます。このテキストが画像の横に回り込みます。
  </p>
  
  <p>
  <strong>4つめの段落</strong>のテキストです。このテキストが画像の横に回り込みます。このテキストが画像の横に回り込みます。
  </p>
  
</div><!-- /.container -->
</body>
</html>
@charset "UTF-8";

/* ----------------------------------
  reset
---------------------------------- */
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}
ul, li {
  list-style: none;
}
a {
  color: inherit;
  text-decoration: none;
}
img {
  max-width: 100%;
  vertical-align: bottom;
}


/* ----------------------------------
  body
---------------------------------- */
body {
  color: #222;
  font-size: 16px;
  font-family: 
    "Helvetica Neue",
    Arial,
    "Hiragino Kaku Gothic ProN",
    "Hiragino Sans",
    Meiryo,
    sans-serif;
  line-height: 1.8;
}


/* ----------------------------------
  layout
---------------------------------- */
.container {
  width: 640px;
  margin: 50px auto;
}
p {
  padding-bottom: 10px
}
p:nth-of-type(1) img {
  float: right;
  margin-left: 20px;
}
p:nth-of-type(3) img {
  float: left;
  margin: 9px 20px 0 0;  /* line-heightの半分の値分、上を空けて画像の上辺と文字の上辺を合わせる */
}
演習課題

今月のおすすめ

きのこのオムライス

ふんわりアツアツのオムライスを、きのこたっぷりのドミグラソースでどうぞ。オムレツには新鮮な特選地卵を使って、ほんのり甘く仕上げています。800円

シーフードスパゲッティ
バルサミコ風味

エビ・イカ・アサリの入ったシェフご自慢のスパゲッティです。バルサミコ酢と生クリームで作ったさっぱりソースをお楽しみください。900円

 ←「title.gif」

 ←「ph01.jpg」

 ←「ph02.jpg」

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>floatを使ったレイアウト</title>
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<div class="container">
  <h2><img src="img/title.gif" alt="今月のおすすめ"></h2>
  <h3>きのこのオムライス</h3>
  <p><img src="img/ph01.jpg" alt="きのこのオムライス">ふんわりアツアツのオムライスを、きのこたっぷりのドミグラソースでどうぞ。オムレツには新鮮な特選地卵を使って、ほんのり甘く仕上げています。<span class="price">800円</span></p>
  <h3>シーフードスパゲッティ<br>
  バルサミコ風味</h3>
  <p><img src="img/ph02.jpg" alt="シーフードスパゲッティバルサミコ風味">エビ・イカ・アサリの入ったシェフご自慢のスパゲッティです。バルサミコ酢と生クリームで作ったさっぱりソースをお楽しみください。<span class="price">900円</span></p>
</div><!-- /.container -->
</body>
</html>
@charset "UTF-8";

/* ----------------------------------
  reset
---------------------------------- */
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}
ul, li {
  list-style: none;
}
a {
  color: inherit;
  text-decoration: none;
}
img {
  max-width: 100%;
  vertical-align: bottom;
}


/* ----------------------------------
  body
---------------------------------- */
body {
  color: #222;
  font-size: 16px;
  font-family: 
    "Helvetica Neue",
    Arial,
    "Hiragino Kaku Gothic ProN",
    "Hiragino Sans",
    Meiryo,
    sans-serif;
  line-height: 1.8;
}


/* ----------------------------------
  layout
---------------------------------- */
.container {
  width: 500px;
  margin: 50px auto;
}
h2 {
  text-align: center;
}
h3 {
  margin: 60px 0 10px;
  padding-left: 10px;
  border-left: 12px solid #dba00d;
  color: #7e4e14;
  font-size: 20px;
  /* font-weight: bold; */
  line-height: 1.2;
}
p > img {
  float: right;
  margin-left: 20px;
}
.price {
  font-weight: bold;
}

floatを使ったレイアウト - 実践

【例】floatを使った定義型リスト

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>floatを使った定義型リスト</title>
<style>
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}
.d-list {
  overflow: hidden;
  width: 440px;
  margin: 50px auto;
}
  dt {
    float: left;
    font-weight: bold;
    line-height: 1.4;
  }
  dd {
    margin-bottom: 8px;
    padding-left: 11em;
    line-height: 1.4;
  }
</style>
</head>
<body>
<dl class="d-list">
  <dt>2022年09月02日</dt>
  <dd>floatを使った定義型リストをCSSでレイアウト</dd>
  <dt>2022年09月02日</dt>
  <dd>floatを使った定義型リストをCSSでレイアウト</dd>
</dl>
</body>
</html>
【例】文字の回り込み
  • アイコンは、Font Awesome6

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>文字の回り込み</title>
<link rel="stylesheet" href="css/sample.css">
<script src="https://kit.fontawesome.com/個人ID.js" crossorigin="anonymous"></script>
</head>
<body>
<div class="container wrap"> 
<main class="main-content">
  <section class="content">
    <h2><i class="fa-solid fa-icicles"></i>減少し続ける南極の氷?</h2>
    <img src="img/photo01.jpg" alt="南極の画像">
    <p>一面の氷の世界の南極。けれど、そんな厳しい環境下でも、実は周辺では生態系が存在しています。<br>
    ペンギン、クジラ、アザラシなどのほか、短い夏には植物が小さな花を咲かせることもあります。</p>
    <p>一面の氷の世界の南極。けれど、そんな厳しい環境下でも、実は周辺では生態系が存在しています。<br>
    ペンギン、クジラ、アザラシなどのほか、短い夏には植物が小さな花を咲かせることもあります。</p>
    <p class="more"><a href="#">詳細を見る</a></p>
  </section>
  <section class="content">
    <h2><i class="fa-solid fa-temperature-low"></i>今年の世界の海の水温予想は?</h2>
    <img src="img/photo02.jpg" alt="氷山の画像">
    <p>近年、世界的な海水温上昇が指摘されていますが、今年はどのような状態が予想されるでしょうか?<br>
    JOPOではアンケートを実施しました。その結果によって見えてきた、世界の海が抱えている現状を検証したいと思います。</p>
    <p class="more"><a href="#">詳細を見る</a></p>
  </section>
</main>
</div>
</body>
</html>
@charset "UTF-8";

/* ----------------------------------
  reset
---------------------------------- */
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}
ul, li {
  list-style: none;
}
a {
  color: inherit;
  text-decoration: none;
}
img {
  max-width: 100%;
  vertical-align: bottom;
}


/* ----------------------------------
  body
---------------------------------- */
body {
  color: #222;
  font-size: 16px;
  font-family: 
    "Helvetica Neue",
    Arial,
    "Hiragino Kaku Gothic ProN",
    "Hiragino Sans",
    Meiryo,
    sans-serif;
  line-height: 1.8;
}


/* ----------------------------------
  layout
---------------------------------- */
.main-content {
  max-width: 610px;
  margin: 50px auto;
}
.content {
  overflow: hidden;
}
.content + .content {
  margin-top: 30px;
}
  .content h2 {
    padding: 8px 0 6px 1em;
    margin-bottom: 20px;
    background: #39c;
    color: #fff;
  }
  .content h2 > i {
    margin-right: 16px;
    color: #ff0;
  }
  .content img {
    float: left;
    margin: 8px 20px 0 0;
  }
  .content p{
    margin-bottom: 10px;
  }

/* ----------- more ----------- */
.more{
  text-align: right;
}
  .more a{
    display: inline-block;
    padding: 10px 12px 10px 32px;
    background: #f50 url(../img/link-icon.png) no-repeat 14px 12px;
    border-radius: 6px;
    color: #fff;
    line-height: 1.0;
  }
  .more a:hover{
    background-color: #a00;
  }

ボタン設定

  • 「display: block」では、コンテンツ幅100%がボタン部になってしまうため、ボタンの設定は「display: inline-block;」とします

【例】floatを使ったタイトル

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>ブログの日付表示</title>
<link rel="stylesheet" href="css/style.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Maven+Pro:wght@400;900&display=swap" rel="stylesheet">
</head>
<body>
<article class="blog">
  <div class="block">
    <time datetime="2022-09-02" class="date">2<br>SEP</time>
    <div class="title">
      <h2>海岸のデコレーション</h2>
      <div class="category">CATEGORY : <a href="#">海と海岸と空</a></div>
    </div><!-- /.title -->
  </div><!-- /.block -->
</article>
</body>
</html>
@charset "UTF-8";

/* ----------------------------------
  reset
---------------------------------- */
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}
ul, li {
  list-style: none;
}
a {
  color: inherit;
  text-decoration: none;
}
img {
  max-width: 100%;
  vertical-align: bottom;
}


/* ----------------------------------
  body
---------------------------------- */
body {
  color: #222;
  font-size: 16px;
  font-family: 
    "Helvetica Neue",
    Arial,
    "Hiragino Kaku Gothic ProN",
    "Hiragino Sans",
    Meiryo,
    sans-serif;
  line-height: 1.8;
}


/* ----------------------------------
  layout
---------------------------------- */
.block {
  max-width: 640px;
  margin: 50px auto;
  overflow: hidden;
}
.date {
  float: right;
  background-color: #0097d8;
  padding: 10px 5px 10px;
  border-radius: 50%;
  color: #ffffff;
  font-size: 18px;
  font-family: 'Maven Pro', Helvetica, Arial, sans-serif;
  font-weight: bold;
  text-align: center;
  line-height: 1.1;
}
  .date::first-line {
    font-size: 40px;
  }
  .title h2	{
    margin-bottom: 6px;
    padding-bottom: 3px;
    border-bottom: 1px solid #aaa;
    font-size: 28px;
  }
  .category {
    color: #666;
    font-size: 14px;
  }