レイアウト

justify-self

justify-self は、グリッドの項目 1 つに書いて、その項目をマスの中で行の向き(横書きなら左右)のどこに置くかを指定します。箱に書いた justify-items を、その項目だけ上書きします。

構文

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

プレビュー

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

コード

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

.box > :nth-child(2) {
  justify-self: center;
}

コントロール

justify-selfcenter
justify-self
safe / unsafe
safe / unsafe
1234

解説

値の書き方

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

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

このページのプレビューは、補助の宣言で display: grid と grid-template-columns: 1fr 1fr にして、2 列のマスに 4 つの項目を入れ、2 番目の項目だけに justify-self を書いています(.box > :nth-child(2) は「箱の 2 番目の子」を選ぶセレクタです)。ほかの項目はマスの幅いっぱいに広がったままで、縁取りした 2 の項目だけが左右に動きます。

justify-items との関係

箱に justify-items を書くと、中の項目すべての位置がまとめて決まります。1 つの項目だけ違う位置にしたいときに、その項目に justify-self を書きます。縦の位置は align-self で決め、place-self で縦と横をまとめて書けます。

グリッド以外では

  • フレックスボックスでは無視されます。1 つの項目だけを右に寄せたいときは、その項目に margin-left: auto を書きます。
  • position: absolute の要素では、inset で決めた範囲の中で横の位置を決めます。Chrome・Edge(122 以降)、Firefox(134 以降)、Safari(26 以降)が対応しています。
  • ブロックの箱(display: block)の子にも効く仕様ですが、今のところ対応しているのは Chrome・Edge(130 以降)だけです。

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

flex-start・flex-end も書けますが、グリッドでは start・end と同じです。このページのコントロールでは扱っていませんが、コードには書けます。

コメント