ウェブデザインにおいては、様々なレイアウトの種類があります。以下に、主なレイアウトの種類とその設定方法について簡単に説明します。

1. フロートレイアウト:

特徴: フロート(float)プロパティを使用して要素を左または右に寄せ、その周りのコンテンツが回り込むように配置します。

設定方法

.clearfix::after {
  content: "";
  display: table;
  clear: both;
}
.float-left {
  float: left;
}

.float-right {
  float: right;
}

HTMLの指定方法

<!-- ページ全体の構造 -->
<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>サイトのタイトル</title>
  <!-- スタイルシートのリンク -->
  <link rel="stylesheet" href="css/style.css">
</head>
<body>
  <div class="clearfix">
    <div class="float-left">左側ボックス</div>
    <div class="float-right">右側ボックス</div>
  </div>
</body>
</html>

注意事項: フロートレイアウトは古い手法であり、フレキシブルでないため、他の方法の使用が推奨されています。

2. フレキシブルボックス(Flexbox):

特徴: 親要素をフレキシブルコンテナとし、子要素を配置するための強力なボックスモデルです。主に1次元のレイアウトに使用されます。

設定方法

.flex-container {
  display: flex;
  justify-content: space-between; /* 子要素を間隔を空けて配置 */
  align-items: center; /* 子要素を垂直方向に中央寄せ */
}

HTMLの指定方法

<!-- ページ全体の構造 -->
<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>サイトのタイトル</title>
  <!-- スタイルシートのリンク -->
  <link rel="stylesheet" href="css/style.css">
</head>
<body>
<div class="flex-container">
  <div class="flex-item">左側ボックス</div>
  <div class="flex-item">右側ボックス</div>
</div>
</body>
</html>

注意事項: Flexboxは主に1次元のレイアウトに利用されます。

3. グリッドレイアウト(Grid):

特徴: 親要素をグリッドコンテナとし、子要素をグリッドセルに配置します。2次元のレイアウトを構築するのに適しています。

設定方法

.grid-container {
  display: grid;
  grid-template-columns: repeat(2, 1fr); /* 2つの列を均等に配置 */
  grid-gap: 10px; /* グリッドセル間の間隔 */
}

HTMLの指定方法

<!-- ページ全体の構造 -->
<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>サイトのタイトル</title>
  <!-- スタイルシートのリンク -->
  <link rel="stylesheet" href="css/style.css">
</head>
<body>
<div class="grid-container">
  <div>左側ボックス</div>
  <div>右側ボックス</div>
</div>
</body>
</html>

注意事項: Gridレイアウトは2次元のレイアウトに優れており、柔軟な配置が可能です。

4. レスポンシブデザイン:

特徴: ウィンドウサイズやデバイスの変化に対応して、適切にコンテンツを再配置することができる設計。

設定方法

メディアクエリを使用して、特定の画面サイズやデバイスに対するスタイルを指定します。

@media screen and (max-width: 767px) {
  /* 767px以下の場合のスタイル設定 */
  .responsive-element {
    width: 100%;
  }
}

注意事項: レスポンシブデザインは、異なるデバイスや画面サイズに対応するために重要です。

各レイアウトのレスポンシブ対応

4-1. フロート(Float):

/* レスポンシブデザインのフロート対応 */
@media screen and (max-width: 767px) {
  .float-left, .float-right {
    float: none; /* フロート解除 */
    width: 100%; /* 横幅を100%に設定 */
  }
}

4-2. フレキシブルボックス(Flexbox):

/* レスポンシブデザインのFlexbox対応 */
.flex-container {
  display: flex;
  flex-wrap: wrap; /* 子要素を折り返す */
}

.flex-item {
  flex: 1 1 45%; /* 幅を均等にし、余白を設ける */
  margin: 5px; /* 子要素間の間隔を設定 */
}

/* 767px以下の場合のスタイル設定 */
@media screen and (max-width: 767px) {
  .flex-item {
    flex-basis: 100%; /* 1列に表示 */
  }
}

4-3. グリッドレイアウト(Grid):

/* レスポンシブデザインのGrid対応 */
.grid-container {
  display: grid;
  grid-template-columns: repeat(2, 1fr));
  grid-gap: 10px; /* グリッドセル間の間隔 */
}

/* 767px以下の場合のスタイル設定 */
@media screen and (max-width: 767px) {
  .grid-container {
    grid-template-columns: 1fr; /* 1列に表示 */
  }
}

これらのレイアウト手法は、デザインの要件や目標に応じて使い分けられます。
また、フレキシブルボックス(display: flex;)やグリッド(display: grid;)など、新しいCSSの機能を積極的に活用することが、柔軟で効率的なレイアウトの構築につながります。

確認用のまとめたデータ

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>レイアウトの種類</title>
  <style>
    div > div {
      background-color: #f2f2f2;
      border: 1px solid #333;
    }
    div > div + div {
      background-color: #ccc;
    }
    .clearfix::after {
      content: "";
      display: table;
      clear: both;
    }
    .float-left {
      float: left;
    }

    .float-right {
      float: right;
    }
    @media screen and (max-width: 767px) {
      .float-left, .float-right {
        float: none; /* フロート解除 */
        width: 100%; /* 横幅を100%に設定 */
      }
    }
    /* レスポンシブデザインのFlexbox対応 */
    .flex-container {
      display: flex;
      flex-wrap: wrap; /* 子要素を折り返す */
    }

    .flex-item {
      flex: 1 1 45%; /* 幅を均等にし、余白を設ける */
      margin: 5px; /* 子要素間の間隔を設定 */
    }

    /* 767px以下の場合のスタイル設定 */
    @media screen and (max-width: 767px) {
      .flex-item {
        flex-basis: 100%; /* 1列に表示 */
      }
    }

    /* レスポンシブデザインのGrid対応 */
    .grid-container {
      display: grid;
      grid-template-columns: repeat(2, 1fr);
      grid-gap: 10px; /* グリッドセル間の間隔 */
    }

    /* 767px以下の場合のスタイル設定 */
    @media screen and (max-width: 767px) {
      .grid-container {
        grid-template-columns: 1fr; /* 1列に表示 */
      }
    }
  </style>
</head>
<body>
  <section>
    <h1>フロートレイアウト</h1>
    <div class="clearfix">
      <div class="float-left">左側ボックス</div>
      <div class="float-right">右側ボックス</div>
    </div>
  </section>
  <section>
    <h1>フレキシブルボックス(Flexbox)</h1>
    <div class="flex-container">
      <div class="flex-item">左側ボックス</div>
      <div class="flex-item">右側ボックス</div>
    </div>
  </section>
  <section>
    <h1>グリッドレイアウト(Grid)</h1>
    <div class="grid-container">
      <div>左側ボックス</div>
      <div>右側ボックス</div>
    </div>
  </section>
</body>
</html>

こちらもおすすめ