レイアウト

align-self

align-self は、フレックスボックスやグリッドの項目 1 つに書いて、その項目だけ交差軸(横に並べたときは縦)の位置を、箱の align-items と違うものにします。

構文

auto | normal | stretch | <baseline-position>
  | <overflow-position>? <self-position> | anchor-center

プレビュー

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

コード

.box {
  display: flex;
}

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

コントロール

align-selfcenter
align-self
safe / unsafe
safe / unsafe
1234

解説

値の書き方

  • auto:初期値です。箱(親)の align-items の値に従います。
  • normal・stretch:高さを決めていない項目を、行の高さいっぱいに伸ばします(フレックスボックスとグリッドでは同じです)。
  • flex-start・flex-end・center:行の上・下・中央に寄せます。項目は中身の高さに縮みます。
  • start・end・self-start・self-end:文字の書き方の向きで上下を決めて寄せます。
  • baseline・last baseline:ほかの baseline の項目と、文字の基準線をそろえます。
  • anchor-center:アンカー位置指定で置いた要素を、アンカーの中央に合わせます。

寄せる値の前に safe を付けると、項目が行より大きいときに上側がはみ出して見えなくならないように start に切り替えます。

項目に書くプロパティ

align-self は箱ではなく、中の項目に書きます。このページのプレビューは、補助の宣言で箱を display: flex にして、2 番目の項目だけに書いています(.box > :nth-child(2))。ほかの項目は箱の align-items の初期値で縦に伸びたままなので、縁取りした 2 の項目だけが動きます。

横の位置は

グリッドの項目の横の位置は justify-self で決めます。フレックスボックスの項目には justify-self が効かないので、1 つだけ右に寄せたいときは、その項目に margin-left: auto を書きます。

コメント