ナビゲーション

構文

名前付き条件

プリセットのすべてのメディア条件とコンテナー条件、その展開したクエリー、測定するスコープ。

このページの内容

プリセットは、独立したメディア条件とコンテナー条件を定義します。短い名前を共有しますが、どちらの登録一覧もテーマトークンの集合ではありません。単独の @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 のようなコンテナーサイズのトークンには、さらに独立した別の役割があります。サイズのユーティリティに長さを提供します。

同じ名前でも測る境界は異なる

プリセットの @md のしきい値は 64rem、@container(--md) は 28rem です。同じ md という名前でも、独立した 2 つの定義は異なる境界をクエリーします。

テキストによる説明
  1. 外側の境界は、プリセットの @md の最小幅 64rem に達したビューポートを表します。
  2. 内側の境界は、独立した @container(--md) の最小幅 28rem に達したクエリーコンテナーを表します。クエリーを適用する要素はその中にあります。
  3. 2 つの幅は同じ縮尺で描き、初期フォントサイズとルートのフォントサイズはともに 16px です。コンテナーサイズのトークンを変更しても、どちらの条件定義も変わりません。

使用例

このレイアウトは、プリセットの md のビューポートしきい値未満では 1 列、しきい値以上では 3 列を使います。

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