CSSのdisplay: flexを活用する方法:実用的な使い方と具体例 | 【福岡】LP・ランディングページ・ホームページ制作|セルピー

CSSのdisplay: flexを活用する方法:実用的な使い方と具体例

1. display: flexとは?

display: flexはCSSのプロパティで、要素を柔軟に配置し、レイアウトを簡単に構築できる機能です。Flexbox(フレックスボックス)を使うことで、縦横の要素配置、スペース配分、揃え方を効率的に管理できます。


2. 基本的なプロパティの紹介

Flexboxの主なプロパティは以下の通りです:

コンテナプロパティ(親要素に指定)

  • display: flex: Flexboxを有効化。
  • flex-direction: 子要素の並び方向(横方向row、縦方向columnなど)。
  • justify-content: 主軸方向(横または縦)の配置方法(中央、隙間均等など)。
  • align-items: 交差軸方向(縦または横)の揃え方(中央、基準線など)。
  • flex-wrap: 子要素を折り返すかどうか。

アイテムプロパティ(子要素に指定)

  • flex: 子要素の伸縮比率を指定。
  • align-self: 特定の子要素だけ揃え方を変更。

3. 実用例

3.1 水平中央揃えのレイアウト

子要素を横並びにし、中央に揃える基本的な例。

htmlコードをコピーする<div class="container">
  <div class="item">Box 1</div>
  <div class="item">Box 2</div>
  <div class="item">Box 3</div>
</div>
cssコードをコピーする.container {
  display: flex;
  justify-content: center; /* 主軸方向で中央揃え */
  align-items: center;    /* 交差軸方向で中央揃え */
  height: 100vh;          /* コンテナの高さを画面全体に */
}
.item {
  width: 100px;
  height: 100px;
  background-color: lightblue;
  margin: 10px;
  display: flex;
  justify-content: center;
  align-items: center;
  font-size: 1.2rem;
}

3.2 レスポンシブな2カラムレイアウト

Flexboxを使って、画面サイズに応じてカラムの数を切り替える例。

htmlコードをコピーする<div class="container">
  <div class="item">Column 1</div>
  <div class="item">Column 2</div>
  <div class="item">Column 3</div>
  <div class="item">Column 4</div>
</div>
cssコードをコピーする.container {
  display: flex;
  flex-wrap: wrap;       /* 子要素を折り返し可能に */
  gap: 10px;             /* 子要素間のスペースを追加 */
}
.item {
  flex: 1 1 calc(50% - 10px); /* 子要素を50%の幅で配置 */
  background-color: lightcoral;
  padding: 20px;
  text-align: center;
  box-sizing: border-box;
}
@media (max-width: 600px) {
  .item {
    flex: 1 1 100%; /* モバイルでは1列に */
  }
}

3.3 ナビゲーションバーの作成

Flexboxを使って、左右に分かれたナビゲーションバーを作成。

htmlコードをコピーする<nav class="navbar">
  <div class="logo">LOGO</div>
  <ul class="menu">
    <li>Home</li>
    <li>About</li>
    <li>Contact</li>
  </ul>
</nav>
cssコードをコピーする.navbar {
  display: flex;
  justify-content: space-between; /* 両端に要素を配置 */
  align-items: center;           /* 縦方向で中央揃え */
  padding: 10px 20px;
  background-color: #333;
  color: white;
}
.menu {
  display: flex;
  gap: 15px; /* メニュー間のスペースを確保 */
  list-style: none;
}
.menu li {
  cursor: pointer;
}

4. 実践的なTips

4.1 子要素の比率を柔軟に調整

flexプロパティを使うと、子要素ごとに異なる幅を簡単に指定できます。

cssコードをコピーする.item {
  flex: 2; /* 他のアイテムより2倍の幅を持つ */
}

4.2 縦方向の中央揃えも簡単

従来のpositionmarginを使わずに縦中央揃えが可能です:

cssコードをコピーする.container {
  display: flex;
  align-items: center; /* 交差軸方向で中央揃え */
}

4.3 コンテナをスクロール可能にする

Flexboxはスクロールの実装も簡単です:

cssコードをコピーする.container {
  display: flex;
  flex-wrap: nowrap; /* 子要素を1行で配置 */
  overflow-x: auto;  /* 横スクロールを有効化 */
}

5. Flexboxの限界と注意点

  • 複雑なグリッドレイアウトには、gridの方が適している場合があります。
  • IEなど古いブラウザでは一部機能がサポートされていない可能性があります(特にgapプロパティ)。

まとめ

Flexboxは、直感的に要素を整列させる強力なツールです。横並びや縦揃え、スペースの均等配置など、レイアウト作成に必要なほぼすべての操作を簡潔に実現できます。これらの具体例を参考に、Flexboxを活用して洗練されたレイアウトを構築してみてください!