CSS ・ Flexbox・Grid

align-self

1つのアイテムだけの交差軸方向の配置

Flexbox で、特定の子要素だけ垂直方向(交差軸方向)の位置を変えたいときに、その子要素に指定します。

初期値
auto
適用対象
フレックスアイテム・グリッドアイテム
継承
しない
01

サンプルコード

HTML
1<div class="flex">
2 <div class="item">1</div>
3 <div class="item">2</div>
4 <div class="item end">3</div>
5 <div class="item">4</div>
6</div>
CSS
1.flex {
2 display: flex;
3 align-items: flex-start;
4 gap: 8px;
5 height: 120px;
6 background: #f5efe6;
7}
8.item {
9 padding: 8px 16px;
10 background: #b68235;
11 color: #fff;
12}
13.end {
14 align-self: flex-end;
15}
02

実行結果

ブラウザでの表示親の align-items: flex-start で全員上揃え。3だけ align-self: flex-end で下に揃います
03

解説

align-self は、アイテム(子要素)の垂直方向の位置を指定するプロパティです。横並びのときは、上揃え・下揃え・中央揃えなどを子要素ごとに決められます。

親要素でも align-items で垂直方向の位置を指定できますが、子要素に align-self が指定されている場合は align-self が優先されます。全体は親の align-items で揃え、例外の1つだけを align-self で変える、という使い方をします。

親要素に高さの余白がなければ(親の高さとアイテムの高さが同じなら)、どの値を指定しても表示は変わりません。

04

応用例・注意点

指定できる値

値説明
auto親要素の align-items の値を使用(初期値)
flex-start子要素を上揃えで配置
flex-end子要素を下揃えで配置
center子要素を中央揃えで配置
baseline子要素をベースライン(文字の下端)に合わせて配置
stretch子要素を上下の余白を埋めるように配置

カードの「詳しく見る」ボタンだけ右下に置く

縦並び(column)のときは交差軸が横になるので、align-self: flex-end で右寄せになります。

HTML
1<div class="card">
2 <p>説明文が入ります。</p>
3 <a class="card__more" href="#">詳しく見る</a>
4</div>
CSS
1.card {
2 display: flex;
3 flex-direction: column;
4}
5.card__more {
6 align-self: flex-end;
7}

注意点

  1. 01align-self は子要素に書くプロパティです。親に書いても効きません。
  2. 02flex-direction: column のときは交差軸が横になるため、左右の位置を決めるプロパティになります。
↑↓ 選択Enter 移動Esc 閉じるCtrl K⌘K で開閉