モダンCSS

Flexbox レイアウト

直感的に、美しく要素を並べるためのレイアウト・ツールキット

Flexbox(フレックスボックス)とは?

Webページのレイアウトを作るための現代的な手法です。昔は「float」というプロパティを使って無理やり横並びを作っていましたが、Flexboxの登場で「横並び」「均等配置」「上下中央揃え」などが驚くほど簡単にできるようになりました。

基本:display: flex

まずは、並べたい要素たちを囲んでいる「親要素(コンテナ)」に `display: flex;` を指定します。これだけで、子要素たちは自動的に横一列に並びます。

CSS
.container {
    display: flex;
    /* これだけで子要素が横並びになる */
}

1. 並ぶ向きを変える (flex-direction)

横並びだけでなく、縦並びや逆順にもできます。スマホ対応で「PCでは横、スマホでは縦」にする時によく使います。

  • `row`: 左から右へ(デフォルト)
  • `column`: 上から下へ
  • `row-reverse`: 右から左へ
  • `column-reverse`: 下から上へ

2. 横方向の配置 (justify-content)

要素の間に隙間を空けたり、中央に寄せたりします。

.container {
    justify-content: center;      /* 中央揃え */
    justify-content: space-between; /* 両端に配置し、間を均等に */
    justify-content: space-around;  /* 周囲に均等なスペース */
}

3. 縦方向の配置 (align-items)

これがFlexboxの強力な機能です。高さを気にせず、簡単に「上下中央揃え」ができます。

.container {
    align-items: center;    /* 上下中央 */
    align-items: flex-start; /* 上揃え */
    align-items: flex-end;   /* 下揃え */
    align-items: stretch;    /* 高さを親に合わせる(デフォルト) */
}

4. 折り返し (flex-wrap)

デフォルトでは、要素が増えても無理やり一行に収めようとしますが、`flex-wrap: wrap;` を指定すると、幅が足りない時に次の行へ折り返してくれます。

便利な新機能:gap

要素と要素の間の「隙間」を指定します。以前はmarginで調整していましたが、gapなら「要素間だけ」にスペースが入るので非常に便利です。

.container {
    display: flex;
    gap: 20px; /* 要素の間隔を20pxにする */
}

まとめ

Flexboxは、現代のWebデザインに必須のスキルです。「display: flex」「justify-content」「align-items」の3つを覚えるだけで、ほとんどの基本レイアウトは作れるようになります。