コンテンツへスキップ

CSS @supports クエリビルダー

プロパティと値を入力し、and / or で 2 つ目の条件を組み合わせ、必要なら not で否定して @supports ブロックをコピーします。判定はこのページを表示しているブラウザーによるものです。

ブラウザ内でローカルに実行
· CSS.supports() · @supports · selector()
機能テスト
ブラウザー判定
CSS をエクスポート

CSS @supports クエリの作り方と書き出したブロックの読み方

このビルダーはプロパティと値を 1 つの CSS 機能テストにまとめ、@supports ブロックとして書き出します。2 つ目のテストは and / or で結合でき、クエリ全体は not で否定でき、判定はこのページを実行しているブラウザーの CSS.supports() が出します。訪問者のブラウザーではなく、いま使っているブラウザーの結果です。

プリセットはよく使う 5 つを用意しています: display: grid、container-type: inline-size、color: oklch(60% 0.2 140)、backdrop-filter: blur(8px)、セレクターテストの selector(:has(*)) です。選ぶとプロパティと値の欄が埋まり、結合の設定はリセットされます。その後に入力を変えるとプリセットは Custom に切り替わります。

  1. プリセットを選ぶか、プロパティと値を入力します。クエリ、判定、書き出しブロックは入力に追従して更新され、実行ボタンはありません。
  2. and または or を選んで 2 つ目のテストを追加し、2 番目のプロパティと値を入力します。両方の欄が埋まった行だけがクエリに加わり、片方だけの行は (: ) として書き出されずに無視されます。
  3. Negate query をオンにすると条件が not で包まれます。単一のテストは not (display: grid)、組み合わせは not ((display: grid) and (gap: 1rem)) と出力されます。
  4. テストが成立したときに適用する CSS を入力します。書き出される @supports ブロック内で、ルール欄の各行は 2 スペースで字下げされます。
  5. 判定を確認して CSS をコピーを押します。リセットは .component のルールと grid プリセットに戻します。

プリセット、値の欄、判定の範囲

単独で完結するテスト

selector()、font-tech()、font-format() はそれだけで完結するテストです。プロパティ欄に selector(:has(*)) や font-tech(color-COLRv1) を入力すると、値の欄は条件に使われません。プロパティと値の組が (property: value) として包まれるのは、両方の欄が埋まったときだけです。

プロパティが空、または値が空のときはクエリも空になります。判定には「条件はまだありません」と表示され、書き出しも空のままです。以前のこのページは (: ) という不正なブロックを生成していました。否定も同じ考え方で、@supports not (property: value) はその宣言が未対応のとき(未知のプロパティを含む)に成立します。

判定が示す範囲

CSS.supports() はページ内で実行されるため、判定が示すのは使用中のブラウザーだけです。計測時の Chrome 153 は (display: grid)、(container-type: inline-size)、(color: oklch(60% 0.2 140))、(backdrop-filter: blur(8px))、selector(:has(*)) のすべてに true を返しました。古いブラウザーでは同じページでも結果が変わります。

判定が対応を示しても、それは閲覧者全体の互換性表ではありません。@supports ブロックの前に通常の宣言を書いておけば、テストに失敗したブラウザーはそちらを使います。

書き出しと処理の場所

書き出されるブロックは @supports <条件> { <ルール> } の形です。条件はテストした文字列のまま出力され、ルール欄の各行は 2 スペースで字下げされます。ルール本文はコメントやフォールバック宣言も含めて入力どおりにコピーされ、CSS をコピーはコード欄の内容をそのままクリップボードへ入れます。

処理はすべてページ内で完結します。計測では入力、プリセット、結合、否定、CSS をコピー、リセットのいずれも外部リクエストを送らず(en / fr / ja)、オフラインでも動作しました。第三者のリクエストは共通のアクセス解析タグのみです。

最近使ったツール: