網站導覽

語法

具名條件

所有預設媒體與容器條件、展開後的查詢,以及各自量測的範圍。

本頁目錄

預設集定義了各自獨立的媒體與容器條件。它們共用簡短名稱,但這兩個登錄表都不是主題 token 集合。單獨的 @md 查詢檢視區,@container(--md) 則查詢符合資格的祖先容器。

媒體條件

媒體名稱來自 media.css。寬度條件使用原本撰寫的 rem 值,方向與偏好條件則使用原生媒體功能。@dark 與 @light 檢查的是系統偏好,不是手動選取的網站主題。

最小檢視區寬度

後綴展開後的查詢
@4xs(width >= 22.5rem)
@3xs(width >= 30rem)
@2xs(width >= 37.5rem)
@xs(width >= 48rem)
@sm(width >= 52.125rem)
@md(width >= 64rem)
@lg(width >= 80rem)
@xl(width >= 90rem)
@2xl(width >= 100rem)
@3xl(width >= 120rem)
@4xl(width >= 160rem)

檢視區寬度小於門檻

後綴展開後的查詢
@max-4xsnot (width >= 22.5rem)
@max-3xsnot (width >= 30rem)
@max-2xsnot (width >= 37.5rem)
@max-xsnot (width >= 48rem)
@max-smnot (width >= 52.125rem)
@max-mdnot (width >= 64rem)
@max-lgnot (width >= 80rem)
@max-xlnot (width >= 90rem)
@max-2xlnot (width >= 100rem)
@max-3xlnot (width >= 120rem)
@max-4xlnot (width >= 160rem)

方向與偏好設定

後綴展開後的查詢
@dark(prefers-color-scheme: dark)
@landscape(orientation: landscape)
@light(prefers-color-scheme: light)
@motion-reduce(prefers-reduced-motion: reduce)
@motion-safe(prefers-reduced-motion: no-preference)
@portrait(orientation: portrait)

容器條件

容器名稱來自 container.css。定義只提供查詢條件:@container(--md) 使用最近且符合資格的容器,@container(card|--md) 則選取名為 card 且符合資格的容器。兩種形式都不會建立容器。

最小容器寬度

後綴展開後的查詢
@container(--3xs)(width >= 16rem)
@container(--2xs)(width >= 18rem)
@container(--xs)(width >= 20rem)
@container(--sm)(width >= 24rem)
@container(--md)(width >= 28rem)
@container(--lg)(width >= 32rem)
@container(--xl)(width >= 36rem)
@container(--2xl)(width >= 42rem)
@container(--3xl)(width >= 48rem)
@container(--4xl)(width >= 56rem)
@container(--5xl)(width >= 64rem)
@container(--6xl)(width >= 72rem)
@container(--7xl)(width >= 80rem)

容器寬度小於門檻

後綴展開後的查詢
@container(--max-3xs)not (width >= 16rem)
@container(--max-2xs)not (width >= 18rem)
@container(--max-xs)not (width >= 20rem)
@container(--max-sm)not (width >= 24rem)
@container(--max-md)not (width >= 28rem)
@container(--max-lg)not (width >= 32rem)
@container(--max-xl)not (width >= 36rem)
@container(--max-2xl)not (width >= 42rem)
@container(--max-3xl)not (width >= 48rem)
@container(--max-4xl)not (width >= 56rem)
@container(--max-5xl)not (width >= 64rem)
@container(--max-6xl)not (width >= 72rem)
@container(--max-7xl)not (width >= 80rem)

每個預設 max- 條件,都是對應最小值條件的互補條件。下方展開的查詢在邊界處不會重疊。原始定義透過 not (--name) 參照對應名稱。

名稱相同,範圍各自獨立

同一個鍵可以在不同查詢領域代表不同門檻。--container-md 這類容器尺寸 token 則屬於第三種獨立用途:為尺寸 utilities 提供長度。

相同名稱,量測不同邊界

預設的 @md 門檻為 64rem,@container(--md) 則為 28rem。雖然兩者都使用 md 名稱,這兩份獨立定義查詢的卻是不同邊界。

文字說明
  1. 外側邊界代表寬度達到預設 @md 最小值 64rem 的檢視區。
  2. 內側邊界代表寬度達到獨立 @container(--md) 最小值 28rem 的查詢容器。被查詢的元素位於該容器內。
  3. 兩種寬度採用相同繪圖比例,初始字型大小與根元素字型大小都是 16px。修改容器尺寸 token 不會改變任一條件定義。

用法

這個版面在預設 md 檢視區門檻以下使用單欄,從門檻起改用三欄。

Notes
Drafts
Archive
<div class="… grid-cols(1) grid-cols(3)@md">  <div>Notes</div>  <div>Drafts</div>  <div>Archive</div></div>
產生的 CSS
@layer utilities {  .grid-cols\(1\) {    display: grid;    grid-template-columns: repeat(1, minmax(0, 1fr))  }  @media (width >= 64rem) {    .grid-cols\(3\)\@md {      display: grid;      grid-template-columns: repeat(3, minmax(0, 1fr))    }  }}

自訂

為檢視區或偏好查詢宣告自訂媒體名稱,或為元件查詢宣告自訂容器名稱。原生單位會保留。在已編譯的 manifest 中替換條件時,如果兩個門檻都要改變,也必須重新宣告其互補條件。

@custom-media --tablet (width >= 48rem);@custom-container --wide-card (width >= 30rem);
<aside class="(container-name:card) container-inline">  <div class="grid-cols(1) grid-cols(2)@container(card|--wide-card)">Card content</div></aside><div class="grid-cols(1) grid-cols(3)@tablet">Page content</div>
產生的 CSS
@layer utilities {  .grid-cols\(1\) {    display: grid;    grid-template-columns: repeat(1, minmax(0, 1fr))  }  .container-inline {    container-type: inline-size  }  .\(container-name\:card\) {    container-name: card  }  @container card (width >= 30rem) {    .grid-cols\(2\)\@container\(card\|--wide-card\) {      display: grid;      grid-template-columns: repeat(2, minmax(0, 1fr))    }  }  @media (width >= 48rem) {    .grid-cols\(3\)\@tablet {      display: grid;      grid-template-columns: repeat(3, minmax(0, 1fr))    }  }}