ナビゲーション

トークン

余白と間隔

padding、margin、gap、inset、オフセットに共通して使える間隔のスケール。

このページの内容

クラス

クラス宣言
p-<name>padding: var(--spacing-<name>);
m-<name>margin: var(--spacing-<name>);
gap-<name>gap: var(--spacing-<name>);
その他のクラス(60 件)
クラス宣言
ix-<name>inset-inline: var(--spacing-<name>);
iy-<name>inset-block: var(--spacing-<name>);
mb-<name>margin-bottom: var(--spacing-<name>);
ml-<name>margin-left: var(--spacing-<name>);
mr-<name>margin-right: var(--spacing-<name>);
mt-<name>margin-top: var(--spacing-<name>);
mx-<name>margin-inline: var(--spacing-<name>);
my-<name>margin-block: var(--spacing-<name>);
pb-<name>padding-bottom: var(--spacing-<name>);
pl-<name>padding-left: var(--spacing-<name>);
pr-<name>padding-right: var(--spacing-<name>);
pt-<name>padding-top: var(--spacing-<name>);
px-<name>padding-inline: var(--spacing-<name>);
py-<name>padding-block: var(--spacing-<name>);
ixe-<name>inset-inline-end: var(--spacing-<name>);
ixs-<name>inset-inline-start: var(--spacing-<name>);
iye-<name>inset-block-end: var(--spacing-<name>);
iys-<name>inset-block-start: var(--spacing-<name>);
mxe-<name>margin-inline-end: var(--spacing-<name>);
mxs-<name>margin-inline-start: var(--spacing-<name>);
mye-<name>margin-block-end: var(--spacing-<name>);
mys-<name>margin-block-start: var(--spacing-<name>);
pxe-<name>padding-inline-end: var(--spacing-<name>);
pxs-<name>padding-inline-start: var(--spacing-<name>);
pye-<name>padding-block-end: var(--spacing-<name>);
pys-<name>padding-block-start: var(--spacing-<name>);
top-<name>top: var(--spacing-<name>);
left-<name>left: var(--spacing-<name>);
inset-<name>inset: var(--spacing-<name>);
right-<name>right: var(--spacing-<name>);
bottom-<name>bottom: var(--spacing-<name>);
col-gap-<name>column-gap: var(--spacing-<name>);
row-gap-<name>row-gap: var(--spacing-<name>);
scroll-m-<name>scroll-margin: var(--spacing-<name>);
scroll-p-<name>scroll-padding: var(--spacing-<name>);
scroll-mb-<name>scroll-margin-bottom: var(--spacing-<name>);
scroll-ml-<name>scroll-margin-left: var(--spacing-<name>);
scroll-mr-<name>scroll-margin-right: var(--spacing-<name>);
scroll-mt-<name>scroll-margin-top: var(--spacing-<name>);
scroll-mx-<name>scroll-margin-inline: var(--spacing-<name>);
scroll-my-<name>scroll-margin-block: var(--spacing-<name>);
scroll-pb-<name>scroll-padding-bottom: var(--spacing-<name>);
scroll-pl-<name>scroll-padding-left: var(--spacing-<name>);
scroll-pr-<name>scroll-padding-right: var(--spacing-<name>);
scroll-pt-<name>scroll-padding-top: var(--spacing-<name>);
scroll-px-<name>scroll-padding-inline: var(--spacing-<name>);
scroll-py-<name>scroll-padding-block: var(--spacing-<name>);
translate-<name>translate: var(--spacing-<name>);
scroll-mxe-<name>scroll-margin-inline-end: var(--spacing-<name>);
scroll-mxs-<name>scroll-margin-inline-start: var(--spacing-<name>);
scroll-mye-<name>scroll-margin-block-end: var(--spacing-<name>);
scroll-mys-<name>scroll-margin-block-start: var(--spacing-<name>);
scroll-pxe-<name>scroll-padding-inline-end: var(--spacing-<name>);
scroll-pxs-<name>scroll-padding-inline-start: var(--spacing-<name>);
scroll-pye-<name>scroll-padding-block-end: var(--spacing-<name>);
scroll-pys-<name>scroll-padding-block-start: var(--spacing-<name>);
shape-margin-<name>shape-margin: var(--spacing-<name>);
word-spacing-<name>word-spacing: var(--spacing-<name>);
border-spacing-<name>border-spacing: var(--spacing-<name>);
outline-offset-<name>outline-offset: var(--spacing-<name>);

ファミリーがプロパティを選び、トークンが距離を指定します。px- と mx- はインライン軸を、pl- と ml- は物理的な左側を使います。完全なファミリー表には、それぞれのネイティブプロパティが載っています。

値

プリセットのスケールは rem 単位の長さを使います。ピクセル換算はルートのフォントサイズを 16px と仮定していますが、ブラウザーは実際のルートのフォントサイズを使います。ゼロや 1 CSS ピクセルには、p(0) や p(1) のような値を直接受け取る関数を使えます。

クラス値
p-4xs.125rem2px
p-3xs.25rem4px
p-2xs.375rem6px
p-xs.5rem8px
p-sm.75rem12px
p-md1rem16px
p-lg1.5rem24px
p-xl2rem32px
p-2xl3rem48px
p-3xl4rem64px
p-4xl6rem96px
p-5xl8rem128px

同じ距離でも作用する境界は異なる

p-md と gap-md はどちらも --spacing-md を参照します。ただし、padding は内容とボックスの端の間に、gap はレイアウト内の項目同士の間に空間を作ります。gap が外側の padding を作ることはありません。

padding は内容を囲み、gap は項目を隔てる

強調した 2 つの距離はどちらも 1rem で、ルートのフォントサイズを 16px として表示しています。青と紫は確認用のオーバーレイであり、p-md や gap-md が追加する色ではありません。

テキストによる説明
  1. 両方の例は Grid と、プリセットの --spacing-md の値 1rem を使います。内容の行には同じタイポグラフィと内部寸法を使っています。
  2. 左の例は p-md を使い、gap はありません。青の帯はボックスの縁の内側にあり、内容を四方から囲んでいます。
  3. 右の例は gap-md を使い、padding はありません。紫の帯は 2 行の間にだけあり、外周には同じ帯がありません。
  4. 図のルートのフォントサイズは 16px なので、強調した各距離は 16px です。例には実際に生成した padding と gap を使いますが、注記の色と破線の境界はユーティリティの出力ではありません。

gap-md が設定するのは間隔の値だけで、Grid や Flexbox を有効にはしません。同様に、inset トークンはオフセットを設定しますが、配置方式は選びません。実際の効果はネイティブプロパティとレイアウトによって決まります。

負のトークン形式を使えるかどうかは参照側によって異なり、-mt-md は有効ですが -p-md は拒否されます。プリセットには zero や auto の間隔トークンはありません。ゼロには m(0) を、インライン方向の自動マージンには mx-auto などの固定ユーティリティを使います。

使用例

フォームに内側の余白を設け、フィールド同士、および各ラベルとコントロールの間隔を調整します。

<form class="… grid gap-md p-md">  <label class="… grid gap-2xs">Name<input class="… px-sm py-xs" value="Aron" /></label>  <label class="… grid gap-2xs">Email<input type="email" class="… px-sm py-xs" value="aron@example.com" /></label></form>
生成された CSS
@layer theme {  :root,  :host {    --spacing-2xs: .375rem;    --spacing-xs: .5rem;    --spacing-sm: .75rem;    --spacing-md: 1rem  }}@layer utilities {  .grid {    display: grid  }  .gap-2xs {    gap: var(--spacing-2xs)  }  .gap-md {    gap: var(--spacing-md)  }  .p-md {    padding: var(--spacing-md)  }  .py-xs {    padding-block: var(--spacing-xs)  }  .px-sm {    padding-inline: var(--spacing-sm)  }}

カスタマイズ

プリセット値を変更したり、トークンを追加したりできます。--spacing-card を定義すると、p-card、m-card、gap-card などの間隔クラスが使えるようになります。

@theme {  --spacing-card: 1.25rem;}
生成された CSS
@layer theme {  :root,  :host {    --spacing-card: 1.25rem  }}@layer utilities {  .p-card {    padding: var(--spacing-card)  }}