align-items

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.

CSSalign-items プロパティは、すべての直接の子要素に集合として align-self の値を設定します。フレックスボックスでは交差軸方向のアイテムの配置を制御します。グリッドレイアウトでは、グリッド領域におけるアイテムのブロック軸方向の配置を制御します。

試してみましょう

このデモは、グリッドレイアウトを使用して align-items のいくつかの値の動作を示しています。

構文

css
/* 基本キーワード */
align-items: normal;
align-items: stretch;

/* 位置による配置 */
/* align-items は左と右の値を取らない */
align-items: center;
align-items: start;
align-items: end;
align-items: flex-start;
align-items: flex-end;
align-items: self-start;
align-items: self-end;
align-items: anchor-center;

/* ベースラインに配置する */
align-items: baseline;
align-items: first baseline;
align-items: last baseline; /* オーバーフロー配置 (位置指定要素のみ) */
align-items: safe center;
align-items: unsafe center;

/* グローバル値 */
align-items: inherit;
align-items: initial;
align-items: revert;
align-items: revert-layer;
align-items: unset;

normal

このキーワードの効果は現在のレイアウトモードに依存します。

  • 絶対位置指定レイアウトでは、このキーワードは置換絶対位置指定ボックスにおける start のように動作し、他のすべての絶対位置指定ボックスでは stretch として動作します。
  • 絶対位置指定レイアウトの静的位置では、キーワードは stretch として動作します。
  • フレックスアイテムについては、このキーワードは stretch として動作します。
  • グリッドアイテムについては、このキーワードは stretch の一つと似た動作をしますが、ボックスにアスペクト比や内在的な寸法がある場合は、 start のように動作します。
  • このプロパティはブロックレベルボックスや、表のセルには適用されません。
center

フレックスアイテムのマージンボックスは、交差軸上の中央に配置されます。アイテムの交差軸のサイズがフレックスコンテナーより大きい場合は、両方向へ均等にはみ出します。

start

そのアイテムは、互いにその軸の配置コンテナーの先頭側の端に寄せられます。

end

そのアイテムは、互いにその軸の配置コンテナーの末尾側の端に寄せられます。

self-start

そのアイテムは、その軸の配置コンテナーで、そのアイテムの先頭側の端に寄せられます。

self-end

そのアイテムは、その軸の配置コンテナーで、そのアイテムの末尾側の端に寄せられます。

baseline, first baseline, last baseline

すべてのフレックスアイテムは、フレックスコンテナーのベースラインに沿って配置されます。交差軸の先頭側マージンの端とベースラインの間の距離が最大のアイテムが、行の交差軸の先頭側の端に寄せられます。

stretch

アイテムが配置コンテナーより小さい場合、自動サイズのアイテムは、アイテムの幅と高さの制限を尊重しながら、コンテナーを埋めるために均等に拡大されます。

anchor-center

アンカー位置指定要素の場合、関連付けられたアンカー要素のブロック方向の中心にアイテムを配置します。 anchor-center を使用してアンカーの中央に配置を参照してください。

safe

配置キーワードと共に使用します。選択されたキーワードによって、アイテムが配置コンテナーをあふれてデータの損失が発生する場合、アイテムは配置モードが start であったかのように配置されます。

unsafe

配置キーワードと共に使用します。アイテムの寸法と配置コンテナーとの関係、あふれることによってデータの損失が発生するかどうかにかかわらず、指定された値を尊重します。

また、フレックスボックスのために定義された 2 つの値があります。これらはフレックスモデルの軸の概念に基づいており、グリッドレイアウトでも同様に動作します。

flex-start

フレックスレイアウトでのみ用いられ、フレックスアイテムを、フレックスコンテナーの主軸の先頭側または交差軸の先頭側の端に寄せて配置します。フレックス整形コンテキスト以外で使用する場合、この値は start として動作します。

flex-end

フレックスレイアウトでのみ用いられ、フレックスアイテムを、フレックスコンテナーの主軸の末尾側または交差軸の末尾側の端に寄せて配置します。フレックス整形コンテキスト以外で使用する場合、この値は end として動作します。

公式定義

初期値normal
適用対象すべての要素
継承なし
計算値指定通り
アニメーションの種類離散値

形式文法

align-items = 
normal |
stretch |
<baseline-position> |
[ <overflow-position>? <self-position> ] |
anchor-center

<baseline-position> =
[ first | last ]? &&
baseline

<overflow-position> =
unsafe |
safe

<self-position> =
center |
start |
end |
self-start |
self-end |
flex-start |
flex-end

この例では、6 つの子要素を持つコンテナーを持っています。 <select> ドロップダウンメニューで、コンテナーの displaygridflex の間で切り替えることができます。 2 つ目のメニューでは、コンテナーの align-items プロパティの値を変更できます。

CSS

コンテナーとアイテムに対して、確実に 2 行または 1 列、またはアイテムを保有しているようにスタイル設定します。 .flex および .grid クラスを定義し、 JavaScript でコンテナーに適用します。これらはコンテナーの display 値を設定し、背景色と境界線を変更することで、レイアウトが変更されたことを示す追加のインジケーターを提供します。 6 つのフレックスアイテムの背景色はそれぞれ異なり、 4 番目のアイテムは 2 行に、 6 番目のアイテムはフォントが拡大されています。

css
.flex,
.grid {
  height: 200px;
  width: 500px;
  align-items: initial; /* ライブサンプルでこの値を変更 */
  border: solid 5px transparent;
  gap: 3px;
}

.flex {
  display: flex;
  flex-wrap: wrap;
  background-color: #8c8c9f;
  border-color: magenta;
}

.grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, 100px);
  background-color: #9f8c8c;
  border-color: slateblue;
}

#item1 {
  background-color: #8cffa0;
  min-height: 30px;
}

#item2 {
  background-color: #a0c8ff;
  min-height: 50px;
}

#item3 {
  background-color: #ffa08c;
  min-height: 40px;
}

#item4 {
  background-color: #ffff8c;
  min-height: 60px;
}

#item5 {
  background-color: #ff8cff;
  min-height: 70px;
}

#item6 {
  background-color: #8cffff;
  min-height: 50px;
  font-size: 30px;
}

HTML

コンテナーの <div> とその中に <div> を 6 つ設置します。フォームの HTML とコンテナーのクラスを変更する JavaScript は、簡潔にするために隠してあります。

html
<div id="container" class="flex">
  <div id="item1">1</div>
  <div id="item2">2</div>
  <div id="item3">3</div>
  <div id="item4">4<br />2 行目</div>
  <div id="item5">5</div>
  <div id="item6">6</div>
</div>

結果

仕様書

Specification
CSS Box Alignment Module Level 3
# align-items-property
CSS Flexible Box Layout Module Level 1
# align-items-property

ブラウザーの互換性

BCD tables only load in the browser

関連情報