検索

スペーシングトークン

フィボナッチ数列に基づくスペーシングトークンと、対応する property class について解説します。

SPACE: 余白のスケーリング

スペーシングに対しては、フィボナッチ数列 ((0, 1,) 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, …) に基づいたスケーリングを採用しています。

デフォルトでは0.5rem ≒ 8px をスケーリングの単位としてトークン値10, 20, 30, … 80 を用意しています。
ただし、それだけだと少し間隔が広いので、例外として前半には微調整用の 5, 15 を用意しています。

:root {
/* スペーシング単位 8 で フィボナッチ*/
--s-unit: calc(var(--REM) * 0.5); /* ≒ 8px */
--s5: calc(0.5 * var(--s-unit)); /* 例外 */
--s10: var(--s-unit);
--s15: calc(1.5 * var(--s-unit)); /* 例外 */
--s20: calc(2 * var(--s-unit));
--s30: calc(3 * var(--s-unit));
--s40: calc(5 * var(--s-unit));
--s50: calc(8 * var(--s-unit));
--s60: calc(13 * var(--s-unit));
--s70: calc(21 * var(--s-unit));
--s80: calc(34 * var(--s-unit));
}
Preview
5
10
15
20
30
40
50
60
70
80
リサイズ可能

対応する Property Class

スペーシングトークンは、padding, margin, gap 系の property class で利用できます。 ただし、すべてのプロパティで使えるわけではありません

フルサポート(トークン値 5〜80)

以下のプロパティには、スペーシングトークン 5, 10, 15, 20, 30, 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, …
my-smargin-block-start-my-s:10, -my-s:20, …
ggap-g:10, -g:20, …

gapinherit にも対応しています。

プリセットクラスなし

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

プロパティCSS
px-spadding-inline-start
px-epadding-inline-end
py-spadding-block-start
py-epadding-block-end
pl, pr, pt, pb物理方向の padding
mx-smargin-inline-start
mx-emargin-inline-end
my-emargin-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
mx-smargin-inline-start-mx-s:auto
mx-emargin-inline-end-mx-e:auto
my-smargin-block-start-my-s:auto
my-emargin-block-end-my-e:auto

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

© Lism CSS. All rights reserved.