レイアウト

justify-items

justify-items は、グリッドの項目を、それぞれのマスの中で行の向き(横書きなら左右)のどこに置くかを、まとめて指定します。

構文

normal | stretch | <baseline-position>
  | <overflow-position>? [ <self-position> | left | right ]
  | legacy | legacy && [ left | right | center ] | anchor-center

プレビュー

1234
プリセット
見本
項目
右下の角をドラッグするとサイズを変えられます

コード

.box {
  display: grid;
  grid-template-columns: 1fr 1fr;
  justify-items: center;
}

コントロール

justify-itemscenter
justify-items
safe / unsafe
safe / unsafe
1234

解説

値の書き方

  • normal:初期値です。グリッドの項目では、幅を決めていなければ stretch と同じになります。
  • stretch:幅を決めていない項目を、マスの幅いっぱいに広げます。
  • start・end・center:マスの行の始まり・終わり・中央に寄せます。項目は中身の幅に縮みます。
  • left・right:文字の向きにかかわらず、マスの左・右に寄せます。
  • self-start・self-end:項目自身の文字の向きで、始まり・終わりに寄せます。
  • baseline・last baseline:同じ列の項目どうしを、文字の基準線でそろえます。横書きの箱の中の横書きの項目には左右の向きの基準線が無いので、baseline は start とほぼ同じ位置になります。
  • anchor-center:アンカー位置指定で置いた要素を、アンカーの中央に合わせます。

center などの前に safe を付けると、項目がマスより広いときに左(始まり)側がはみ出して見えなくならないように、start に切り替えます。unsafe は、はみ出してもそのまま寄せます。

justify-self との関係

justify-items は箱に書いて、中の項目すべての justify-self の初期値(auto)を決めます。1 つの項目だけ違う位置にしたいときは、その項目に justify-self を書きます。縦の位置は align-items で決めます。place-items: center と書くと、縦と横をまとめて中央にできます。

このページのプレビューは、補助の宣言で display: grid と grid-template-columns: 1fr 1fr にして、2 列のマスに 4 つの項目を入れています。

効かない場面

  • フレックスボックスでは無視されます。横の並べ方は justify-content で決めます。
  • ブロックの箱(display: block)の子にも効く仕様ですが、今のところ対応しているのは Chrome・Edge(130 以降)だけです。

このページで扱わない書き方

legacy は、HTML の align 属性のように、位置を子孫の要素にも受け継がせるための値です(legacy center など)。flex-start・flex-end も書けますが、グリッドでは start・end と同じです。どちらもこのページのコントロールでは扱っていませんが、コードには書けます。

コメント