検索

余白トークン

フィボナッチ数列ベースの調和スケールと、前半部分の中間値を組み合わせた余白トークン、および対応する 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-unit0.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>
Preview
5
10
15
20
25
30
35
40
50
60
70
80
リサイズ

対応する 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対応
ppadding-p:5, -p:20, …
pxpadding-inline-px:10, -px:30, …
pypadding-block-py:15, -py:40, …
mmargin-m:10, -m:20, …
mxmargin-inline-mx:10, -mx:20, …
mymargin-block-my:10, -my:20, …
mbsmargin-block-start-mbs:10, -mbs:20, …
ggap-g:10, -g:20, …

gapinherit にも対応しています。

プリセットクラスなし

以下のプロパティには、余白トークンのプリセット property class は用意されていません。ただし、CSS変数(--ps 等)や JSX prop(ps="20" 等)での値指定は可能です。

プロパティCSS
pspadding-inline-start
pepadding-inline-end
pbspadding-block-start
pbepadding-block-end
pl, pr, pt, pb物理方向の padding
msmargin-inline-start
memargin-inline-end
mbemargin-block-end
ml, mr, mt, mb物理方向の margin
cgcolumn-gap
rgrow-gap

margin 系の auto 対応

margin 系のプロパティには、余白トークンに加えて auto の property class も用意されています。

プロパティCSSクラス
mmargin-m:auto
mxmargin-inline-mx:auto
mymargin-block-my:auto
msmargin-inline-start-ms:auto
memargin-inline-end-me:auto
mbsmargin-block-start-mbs:auto
mbemargin-block-end-mbe:auto

各 property class の詳細は Property Class の一覧表を参照してください。

© Lism CSS. All rights reserved.