余白トークン
フィボナッチ数列ベースの調和スケールと、前半部分の中間値を組み合わせた余白トークン、および対応する property class について解説します。
SPACE: 余白のスケーリング
--s40 以降の主軸はフィボナッチ数列 ((0, 1,) 1, 2, 3, 5, 8, 13, 21, 34, …) に基づくスケールです。--s-unit(デフォルト calc(var(--fz--base) * 0.5) = ≒ 8px)を基準単位として算出しています。
それだけだと前半部分が粗いため、--s5 (4px) / --s15 (12px) / --s25 (20px) / --s35 (32px) を、主軸トークン間を補う中間値として追加しています。
:root,.set--var\:s { /* 余白単位 ≒ 8px */ --s-unit: calc(var(--fz--base) * 0.5);
--s10: var(--s-unit); /* ≒ 8px */ --s20: calc(var(--s-unit) * 2); /* ≒ 16px */ --s30: calc(var(--s-unit) * 3); /* ≒ 24px */ --s40: calc(var(--s-unit) * 5); /* ≒ 40px */ --s50: calc(var(--s-unit) * 8); /* ≒ 64px */ --s60: calc(var(--s-unit) * 13); /* ≒ 104px */ --s70: calc(var(--s-unit) * 21); /* ≒ 168px */ --s80: calc(var(--s-unit) * 34); /* ≒ 272px */
/* ~40 までの前半部分は間を埋める */ --s5: calc(var(--s-unit) * 0.5); /* ≒ 4px */ --s15: calc(var(--s-unit) * 1.5); /* ≒ 12px */ --s25: calc(var(--s-unit) * 2.5); /* ≒ 20px */ --s35: calc(var(--s-unit) * 4); /* ≒ 32px */}
.set--var\:s { --s-unit: 0.5em;}set--var:s クラスを使うと、そのスコープでは --s-unit が 0.5em に切り替わり、--s10〜--s80 がフォントサイズ基準で再計算されます。Button や Badge など、内部余白をフォントサイズに追従させたい部品で活用できます。
<!-- ボタンの padding が button 自身の font-size に追従する --><button class="set--var:s -fz:s -py:10 -px:20">...</button>
<!-- --s-unit を任意の値で上書きすることも可能 --><button class="set--var:s -p:10" style="--s-unit: .4375em">...</button>51015202530354050607080参考資料: タイポグラフィと余白のスケーリング設計について
対応する Property Class
余白トークンは、padding, margin, gap 系の property class で利用できます。
ただし、すべてのプロパティで使えるわけではありません。
フルサポート(トークン値 5〜80)
以下のプロパティには、余白トークン 5, 10, 15, 20, 25, 30, 35, 40, 50, 60, 70, 80 に対応した property class が用意されています。
| プロパティ | CSS | クラス例 | BP対応 |
|---|---|---|---|
p | padding | -p:5, -p:20, … | ○ |
px | padding-inline | -px:10, -px:30, … | ○ |
py | padding-block | -py:15, -py:40, … | ○ |
m | margin | -m:10, -m:20, … | ○ |
mx | margin-inline | -mx:10, -mx:20, … | ○ |
my | margin-block | -my:10, -my:20, … | ○ |
mbs | margin-block-start | -mbs:10, -mbs:20, … | ○ |
g | gap | -g:10, -g:20, … | ○ |
gap は inherit にも対応しています。
プリセットクラスなし
以下のプロパティには、余白トークンのプリセット property class は用意されていません。ただし、CSS変数(--ps 等)や JSX prop(ps="20" 等)での値指定は可能です。
| プロパティ | CSS |
|---|---|
ps | padding-inline-start |
pe | padding-inline-end |
pbs | padding-block-start |
pbe | padding-block-end |
pl, pr, pt, pb | 物理方向の padding |
ms | margin-inline-start |
me | margin-inline-end |
mbe | margin-block-end |
ml, mr, mt, mb | 物理方向の margin |
cg | column-gap |
rg | row-gap |
margin 系の auto 対応
margin 系のプロパティには、余白トークンに加えて auto の property class も用意されています。
| プロパティ | CSS | クラス |
|---|---|---|
m | margin | -m:auto |
mx | margin-inline | -mx:auto |
my | margin-block | -my:auto |
ms | margin-inline-start | -ms:auto |
me | margin-inline-end | -me:auto |
mbs | margin-block-start | -mbs:auto |
mbe | margin-block-end | -mbe:auto |
各 property class の詳細は Property Class の一覧表を参照してください。
CSSプロパティに紐づいた Property Class の一覧とその使い方について解説します。