ZeroPlus Gateについて

\ シェア /

FacBook
Twitter
LINE
はてブ
PPocket
ZeroPlus Media > Web制作 > HTML/CSS > 【CSS】align-itemsの使い方を解説!flexアイテムの高さを揃える方法

【CSS】align-itemsの使い方を解説!flexアイテムの高さを揃える方法

HTML/CSS

2022/04/11

2025/12/24

align-items記事サムネイル

画像やテキストを横並びにするとき、display: flex;を指定することが多くあります。そのとき、「画像の並び方を整えたい」「要素を上下の中央に配置したい」と思うことはありませんか?

このような実装を行うには、align-items プロパティを使用します。align-items はflexアイテムの上下の配置を指定することができるプロパティです。要素の配置を統一すればレイアウトが見やすくなります。

align-itemsの解説画像

この記事では align-items の使い方を解説します。align-items はdisplay: flex;を使用するうえで欠かせないプロパティなので、しっかり学習しておきましょう。

この記事で身につく内容
  • align-itemsとは
  • align-itemsの使い方

ZeroPlus Gateについて

プログラミング学習でこのような経験はありませんか?

  1. 目標に向けて何を学べば良いかわからない
  2. 調べても解決策が見つからない
  3. 現場レベルのスキルが身につくのか不安

これらの悩みは、学習環境を整えることで全て解決することができます。

ZeroPlus Gateでは、30日間無料で最適な学習環境を提供しています。

  1. なんでも相談できる専属メンター
  2. いつでも技術相談ができるプロ講師
  3. 元IT企業CTO監修のカリキュラム

条件なしでこのレベルの環境を無料で提供しているのはZeroPlus Gateだけです。
ただし、無料サービスの提供には参加者の数に制限があります。

少しでも興味がある方は、以下のリンクからサービスの詳細をご覧ください。

ZeroPlus Gateの詳細を見る

 

align-itemsとは

align-items は、flexアイテムを縦軸で見たときに「上下のどこで揃えるか」を指定するプロパティです。具体的には上揃え・中央揃え・下揃えなどができます。

flexアイテムに対して有効なプロパティであるため、display: flex;と併用して親要素に記述します。

 

align-itemsの使い方

align-items は、flexアイテムに対して有効なプロパティであるため、display: flex;と一緒に親要素(flexコンテナ)に指定します。

以下がCSSの基本形です。

.flexbox {
  display: flex;
  align-items: 値;
}

align-items には、以下の値を指定します。

align-itemsの値
  • flex-start: 子要素を上部で揃える
  • flex-end: 子要素を下部で揃える
  • center: 子要素を中央で揃える
  • baseline: 子要素をテキストの下部(ベースライン)で揃える
  • stretch / normal: 親要素の高さに合わせて子要素を伸縮する

flex-start:上揃え

align-items: flex-start;は、子要素を上部で揃える指定です。

例として子要素の高さをバラバラに指定します。

HTMLの記述

<div class="flexbox">
  <div class="flex-item item01"></div>
  <div class="flex-item item02"></div>
  <div class="flex-item item03"></div>
  <div class="flex-item item04"></div>
  <div class="flex-item item05"></div>
</div>
CSSの記述
.flexbox {
  display: flex;
  align-items: flex-start;/*子要素を上部で揃える指定*/
  height: 150px;
  border: 1px solid #000;
}

.flex-item {
  background: orange;
  border: 1px solid #000;
  width: 30px;
}

.item01 {
  height: 30px;
}

.item02 {
  height: 60px;
}

.item03 {
  height: 20px;
}

.item04 {
  height: 10px;
}

.item05 {
  height: 100px;
}
出力結果

align-items: flex-start;の出力結果

子要素が上揃えになっています。

flex-start は初期値であるため、align-items を指定しない場合にもこの値が適応されます。

ZeroPlusgate50教材の動画

 

flex-end:下揃え

align-items: flex-end;は、子要素を下部で揃える指定です。

HTMLの記述

<div class="flexbox">
  <div class="flex-item item01">①</div>
  <div class="flex-item item02">②</div>
  <div class="flex-item item03">③</div>
  <div class="flex-item item04">④</div>
  <div class="flex-item item05">⑤</div>
</div>
CSSの記述
.flexbox {
  display: flex;
  align-items: flex-end;
  height: 150px;
  border: 1px solid #000;
}
 
.flex-item {
  background: orange;
  border: 1px solid #000;
  width: 30px;
}

.item01 {
  height: 30px;
}

.item02 {
  height: 60px;
}

.item03 {
  height: 20px;
}

.item04 {
  height: 10px;
}

.item05 {
  height: 100px;
}
出力結果

align-items: flex-end;の出力結果

子要素(flexアイテム)が親要素(flexコンテナ)の中で下揃えになっています。

 

center:上下中央揃え

align-items: center;は、子要素を上下中央で揃える指定です。

HTMLの記述

<div class="flexbox">
  <div class="flex-item item01">①</div>
  <div class="flex-item item02">②</div>
  <div class="flex-item item03">③</div>
  <div class="flex-item item04">④</div>
  <div class="flex-item item05">⑤</div>
</div>
CSSの記述
.flexbox {
  display: flex;
  align-items: flex-end;
  height: 150px;
  border: 1px solid #000;
}
 
.flex-item {
  background: orange;
  border: 1px solid #000;
  width: 30px;
}

.item01 {
  height: 30px;
}

.item02 {
  height: 60px;
}

.item03 {
  height: 20px;
}

.item04 {
  height: 10px;
}

.item05 {
  height: 100px;
}
出力結果

align-items: center;の出力結果

子要素(flexアイテム)が親要素(flexコンテナ)の中で中央揃えになっています。

 

baseline:テキストの下部で揃える

align-items: baseline;は、子要素をベースライン(テキストの下部)を基準として配置する指定です。例として子要素にテキストを記述して表示します。加えて、分かりやすくするために font-size を指定します。

HTMLの記述

<div class="flexbox">
  <div class="flex-item item01">①</div>
  <div class="flex-item item02">②</div>
  <div class="flex-item item03">③</div>
  <div class="flex-item item04">④</div>
  <div class="flex-item item05">⑤</div>
</div>
CSSの記述
.flexbox {
  display: flex;
  /*追加*/
  align-items: baseline;/*子要素をテキストの下部で揃える指定*/
  height: 150px;
  border: 1px solid #000;
}

.flex-item {
  background: orange;
  border: 1px solid #000;
  width: 30px;
}
.item01 {
  height: 30px;
}

.item02 {
  height: 60px;
}

.item03 {
  height: 20px;
}

.item04 {
  height: 10px;
}

.item05 {
  height: 100px;
}
出力結果

align-items: baseline;の出力結果

一列に並んだ文字(①〜⑤)に合わせて、子要素(flexアイテム)が配置されるようになりました。

 

stretch / normal:要素の伸縮

align-items: stretch;もしくはalign-items: normal;は、親要素の高さに合わせて子要素の高さを伸縮する指定です。

例として親要素の高さを150pxと指定します。

HTMLの記述

<div class="flexbox">
  <div class="flex-item"></div>
  <div class="flex-item"></div>
  <div class="flex-item"></div>
  <div class="flex-item"></div>
  <div class="flex-item"></div>
</div>
CSSの記述
.flexbox {
  display: flex;
  height: 150px;/*高さを150pxに指定*/
  align-items: stretch;/*子要素の高さが伸縮する指定*/
}

.flex-item {
  background: orange;
  border: 1px solid #000;
  width: 30px;
}
出力結果

align-items: stretch;の出力結果

子要素(flexアイテム)には height を指定していませんが、親要素(flexコンテナ)の高さに合わせて子要素の高さが変化しています。

 

実務でalign-itemsプロパティを使うケース

align-itemsプロパティを実務で使うケースについて紹介します。

 

アイコンとテキストを上下中央に揃えるとき

アイコンとテキストを横並びに配置したとき、文字サイズやアイコンサイズによって縦位置がずれることがあります。

その際にalign-item: center; を適用してアイコンとテキストを上下中央に揃えることができます。

<div class="container">
    <p>align-items: center; で上下中央寄せ</p>
    <div class="category">
      <span class="category__item center">
        <span class="category__icon"></span>
        カテゴリー
      </span>
      <span class="category__item center">
        <span class="category__icon"></span>
        カテゴリーカテゴリー
      </span>
      <span class="category__item center">
        <span class="category__icon"></span>
        カテゴリー
      </span>
    </div>
    <p>align-items: center; 指定なし</p>
    <div class="category">
      <span class="category__item">
        <span class="category__icon"></span>
        カテゴリー
      </span>
      <span class="category__item">
        <span class="category__icon"></span>
        カテゴリーカテゴリー
      </span>
      <span class="category__item">
        <span class="category__icon"></span>
        カテゴリー
      </span>
    </div>
  </div>
.category {
    display: flex;
    gap: 20px;
    margin-top: 10px;
    margin-bottom: 40px;
}
.category__item {
    position: relative;
    display: flex;
    gap: 5px;
    line-height: 1.6;
    border: 1px solid #ccc;
}

.center {
    align-items: center;
}

.category__icon {
    width: 5px;
    height: 5px;
    background-color: orange;
    border-radius: 50%;
    display: block;
}
/* レイアウト調整 */
.container {
    padding: 40px;
}

以下のように拡大してみると、オレンジ色のアイコンとテキストがそれぞれ上下中央配置になっていることがわかります。

 

カードレイアウトで画像とテキストを揃えたいとき

カードレイアウトで画像とテキストを横並び配置にする場合、画像とテキストを上端で揃えたいときに使用します。

<div class="container">
    <p class="text">上端に揃える <span>align-items: flex-start;</span></p>
    <div class="cardList">
      <div class="cardList__item">
        <div class="card start">
          <div class="card__img"></div>
          <div class="card__textBox">
            <h2>見出し</h2>
            <p>テキストテキストテキストテキストテキストテキスト</p>
          </div>
        </div>
      </div>
      <div class="cardList__item">
        <div class="card start">
          <div class="card__img"></div>
          <div class="card__textBox">
            <h2>見出し</h2>
            <p>テキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキスト</p>
          </div>
        </div>
      </div>
    </div>
    <p class="text">上下中央に揃える <span>align-items: center;</span></p>
    <div class="cardList">
      <div class="cardList__item">
        <div class="card center">
          <div class="card__img"></div>
          <div class="card__textBox">
            <h2>見出し</h2>
            <p>テキストテキストテキストテキストテキストテキスト</p>
          </div>
        </div>
      </div>
      <div class="cardList__item">
        <div class="card center">
          <div class="card__img"></div>
          <div class="card__textBox">
            <h2>見出し</h2>
            <p>テキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキスト</p>
          </div>
        </div>
      </div>
    </div>
    <p class="text">下端に揃える <span>align-items: flex-end;</span></p>
    <div class="cardList">
      <div class="cardList__item">
        <div class="card end">
          <div class="card__img"></div>
          <div class="card__textBox">
            <h2>見出し</h2>
            <p>テキストテキストテキストテキストテキストテキスト</p>
          </div>
        </div>
      </div>
      <div class="cardList__item">
        <div class="card end">
          <div class="card__img"></div>
          <div class="card__textBox">
            <h2>見出し</h2>
            <p>テキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキスト</p>
          </div>
        </div>
      </div>
    </div>
  </div>
.cardList {
    display: flex;
    gap: 20px;
    margin-top: 10px;
    margin-bottom: 40px;
    justify-content: center;
}
.cardList__item {
    max-width: 200px;
}
.card {
    border: 1px solid #000;
    padding: 10px;
    display: flex;
    column-gap: 10px;
    height: 100%;
}


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


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


.card__img {
    background-color: orange;
    width: 50px;
    height: 50px;
    flex-shrink: 0;
}
.card__textBox {
    font-size: 14px;
}
/* レイアウト調整 */
.container {
    padding: 100px;
}


.text {
    font-size: 24px;
    text-align: center;
}
.text span {
    color: red;
}

align-items: flex-start; で画像とテキストを上端で揃えています。

もし上下中央で揃える場合は、align-items: center; を適用し、下端で揃える場合はalign-items: end; を適用します。

flex-shrink プロパティについては以下の記事で解説しています。

 

まとめ

align-items はflexアイテムの上下の位置を指定するプロパティです。上揃え・中央揃え・下揃えだけでなく、要素の伸縮やテキストの位置を基準とした指定も可能です。

align-items を使用すれば、大きさの違う要素の並び方に統一感を出せます。大きさの違う画像を並べるときやflexアイテムの中にテキストがあるときなどに有用ですので、使いこなせるようになっていきましょう。

align-itemsまとめ

  • flexアイテムの位置を揃えるプロパティ
  • display: flex;と併用する
  • flexアイテムを上揃え・中央揃え・下揃え・要素の伸縮・テキストの下部で揃えることが可能

align-itemsの解説画像

関連記事

flexアイテムを縦軸ではなく横軸で見たとき、中央揃えや右揃えにするには justify-contentプロパティを使用します。justify-contentについては以下の記事が参考になりますので、ぜひご覧ください。

ZeroPlus Gateについて

プログラミング学習でこのような経験はありませんか?

  1. 目標に向けて何を学べば良いかわからない
  2. 調べても解決策が見つからない
  3. 現場レベルのスキルが身につくのか不安

これらの悩みは、学習環境を整えることで全て解決することができます。

ZeroPlus Gateでは、30日間無料で最適な学習環境を提供しています。

  1. なんでも相談できる専属メンター
  2. いつでも技術相談ができるプロ講師
  3. 元IT企業CTO監修のカリキュラム

条件なしでこのレベルの環境を無料で提供しているのはZeroPlus Gateだけです。
ただし、無料サービスの提供には参加者の数に制限があります。

少しでも興味がある方は、以下のリンクからサービスの詳細をご覧ください。

ZeroPlus Gateの詳細を見る

\ 学んだことをSNSでシェアしよう /

おすすめのタグ

この記事の執筆者

ZeroPlus Media変種部

ZeroPlus Media編集部

ZeroPlusは、「フリーランス特化型プログラミングスクール」です。ZeroPlus Mediaでは、フリーランスとして活躍する際に役立つ有益なプログラミングやWeb制作に関する情報を発信しています。

質問について

ZeroPlus Media読者限定で質問対応をおこなっています。以下の2つの方法で質問を受け付けています。

選べる2つの質問方法

1

Google Foam(テキスト)で質問

mail

フォーム送信

メールで解答

formで質問
2

Google meet(オンラインmtg)で質問

meet

日時選択

メールを受け取る

メールからmtgに参加

meetで質問
ZeroPlus Gateについて

あなたの目的に合わせた2つのサービス

あなたの目的に合わせたZeroPlusの2つのサービス
基礎からフリーランスレベルまで本質的な学びを提供しています

完全無料!30日間で学びきれる
プログラミンスクールZeroPlus Gate

  • お金をかけずに、学習を進めたい
  • Webサイトを作れるようになりたい
  • メンターや講師に質問しながら学習したい

詳しくはこちらから

フリーランス特化型
プログラミングスクール ZeroPlus

  • プログラミング学習で悩んでいる
  • 仲間と一緒に学習したい
  • フリーランスとしての総合的な力を養いたい

詳しくはこちらから