CSS Flexboxで要素を「上・中央・下」に揃える完全ガイド【初心者向けに超わかりやすく解説】

CSS Flexboxで要素を「上・中央・下」に揃える完全ガイド【初心者向けに超わかりやすく解説】

2025.11.24

Flexbox の魅力の ひとつは
要素を簡単に揃えられること(位置揃え) にあります。

しかし、初心者の方がよくつまずくのが、

  • align-items と justify-content の違い
  • 上揃え・中央揃え・下揃えの正しいやり方
  • 縦並び・横並びでの挙動の違い

この記事では 最もわかりやすく これらを整理して解説します。


Flexbox の基本:縦方向・横方向の考え方

Flexbox の位置揃えは “方向(flex-direction)” によって意味が変わります。

横並び(row のとき)

  • 主軸(メイン軸)=横方向
  • 交差軸(クロス軸)=縦方向

縦並び(column のとき)

  • 主軸=縦方向
  • 交差軸=横方向

そして、揃え方はこう対応します:

プロパティ どの方向を揃える?
justify-content 主軸(main-axis)
align-items 交差軸(cross-axis)

つまり、flex-direction が row(横並び)か column(縦並び)か で役割が変わるわけです。


1. 横並び(row)のとき:上・中央・下に揃える

横並びがデフォルトなので、まずはこちらから。

上揃え(align-items: flex-start)

<div class="flex top">
  <div class="box">A</div>
  <div class="box">B</div>
  <div class="box">C</div>
</div>
.flex {
  display: flex;
  height: 200px;
  background: #f2f2f2;
}
.flex.top {
  align-items: flex-start;
}
.box {
  width: 80px;
  padding: 20px;
  background: #4087bf;
  color: #fff;
  margin: 5px;
}

要素が 上端に揃う


中央揃え(align-items: center)

.flex.center {
  align-items: center;
}

上下中央に配置される


下揃え(align-items: flex-end)

.flex.bottom {
  align-items: flex-end;
}

要素が 下端に揃う


2. 横並びで「左右に揃える」「中央寄せ」も併用可能

  • 左寄せ → justify-content: flex-start
  • 右寄せ → justify-content: flex-end
  • 水平中央 → justify-content: center
  • 均等配置 → justify-content: space-between
.flex.center-both {
  justify-content: center;
  align-items: center;
}

3. 縦並び(column)の場合:揃え方が逆になる

flex-direction: column; を指定した場合、
上下の揃え方は justify-content が担当になります。

<div class="flex-column middle">
  <div class="box">A</div>
  <div class="box">B</div>
</div>
.flex-column {
  display: flex;
  flex-direction: column;
  height: 300px;
}

上揃え(justify-content: flex-start)

.flex-column.top {
  justify-content: flex-start;
}

中央揃え(justify-content: center)

.flex-column.middle {
  justify-content: center;
}

下揃え(justify-content: flex-end)

.flex-column.bottom {
  justify-content: flex-end;
}

4. よくある失敗ポイント

親に height がないと揃わない

Flex は 空間がある場合にだけ揃えられる ので、高さ指定が必須です。

.flex {
  height: 200px; /* これがないと上下揃えは不可 */
}

子要素に margin-top: auto; を使う場合の挙動

子要素が勝手に下へ吸い寄せられる場合は
margin-top: auto; の指定が悪さをしていることがあります。


まとめ

Flex の位置揃えは方向で変わる!

並び方向 上下揃えの方法
row(横) align-items
column(縦) justify-content

タグ:

#CSS #Flexbox #align-items #justify-content #中央揃え