網站導覽

設計變數

間距

用同一套間距尺度設定 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>);

家族決定屬性,token 提供距離。px- 與 mx- 使用行內軸,pl- 與 ml- 則使用實體左側。完整家族表會列出各自對應的原生屬性。

值

預設尺度使用 rem 長度。像素換算假設根元素字型大小為 16px;瀏覽器會使用實際的根元素字型大小。需要零或一個 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 隔開項目

兩個標示的距離都是 1rem,以 16px 的根元素字型大小呈現。藍色與紫色是檢查用的疊加標註,p-md 與 gap-md 不會加入這些色彩。

文字說明
  1. 兩個範例都使用 Grid,以及預設的 --spacing-md 值 1rem。內容列的文字排版與內部尺寸相同。
  2. 左側範例使用 p-md,沒有 gap。藍色區帶位於盒子邊緣內側,從四個方向圍住內容。
  3. 右側範例使用 gap-md,沒有 padding。紫色區帶只位於兩列之間,外圍沒有對應的區帶。
  4. 圖中根元素字型大小為 16px,因此每個標示距離都是 16px。範例使用真正生成的 padding 與 gap,但標註色彩與虛線邊界不是 utility 的輸出。

gap-md 只會設定間隙值,不會啟用 Grid 或 Flexbox。同樣地,inset token 只會設定偏移量,不會選擇定位方式。實際效果由原生屬性與版面配置決定。

能否使用負值 token 形式,取決於讀取它的屬性:-mt-md 合法,-p-md 則會被拒絕。預設集沒有 zero 或 auto 間距 token;零值可用 m(0),行內軸自動外距則可用 mx-auto 這類固定 utility。

用法

為表單加入內距、拉開欄位間距,並隔開每個標籤與控制項。

<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)  }}

自訂

修改預設值或新增 token:--spacing-card 會建立 p-card、m-card、gap-card 和其他間距 class。

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