CSS条件規則モジュール レベル4

W3C 勧告候補スナップショット,

この文書の詳細情報
このバージョン:
https://www.w3.org/TR/2022/CR-css-conditional-4-20220217/
最新版:
https://www.w3.org/TR/css-conditional-4/
編集者草案:
https://drafts.csswg.org/css-conditional-4/
過去のバージョン:
履歴:
https://www.w3.org/standards/history/css-conditional-4
実装報告:
https://wpt.fyi/results/css/css-conditional
テストスイート:
https://wpt.fyi/results/css/css-conditional
https://wpt.fyi/results/css/css-conditional/
フィードバック:
CSSWG イシューレポジトリ
仕様内インライン
編集者:
L. David Baron (Mozilla)
Elika J. Etemad / fantasai (招待専門家)
Chris Lilley (W3C)
この仕様の編集提案:
GitHub 編集
デルタ仕様:
あり

概要

このモジュールは、CSSのスタイルシートの一部を、プロセッサやスタイルシートが適用される環境の能力に基づいて条件付き処理する機能を含みます。 CSS Conditional 3 [css-conditional-3] の機能を含み、さらに拡張しています。 新しい selector() 記法による supports queries を使って、特定のセレクターのサポート可否を問い合わせる機能 [SELECTORS-4] を追加しています。

CSSは、構造化文書(HTMLやXMLなど)の画面・紙などでのレンダリング方法を記述する言語です。

この文書のステータス

このセクションは、公開時点での文書のステータスを説明します。 現在のW3C出版物一覧および本技術レポートの最新版は W3C技術レポート一覧(https://www.w3.org/TR/)で確認できます。

この文書は CSSワーキンググループによって、勧告候補スナップショットとして勧告トラックを用いて公開されました。 勧告候補として公開されたことは、W3Cおよびその会員による支持を意味するものではありません。 勧告候補スナップショットは、広範なレビューを受けており、 実装経験の収集を目的とし、ワーキンググループメンバーによるロイヤリティフリーライセンスのコミットメントも得られています。 この文書は最終的にW3C勧告となる予定です。 追加フィードバックを収集するため、まで少なくとも勧告候補のままとなります。

フィードバックは GitHubでissue提出(推奨)によりお願いします。 タイトルに仕様コード「css-conditional」を含めてください(例:「[css-conditional] …コメント概要…」)。 すべてのissueとコメントはアーカイブされています。 または、(アーカイブあり) 公開メーリングリスト www-style@w3.org でも受け付けています。

この文書は 2021年11月2日 W3Cプロセス文書に従って管理されています。

この文書は W3C特許ポリシーの下で活動するグループによって作成されました。 W3Cは、グループの成果物に関連して公開された特許開示の一覧を維持しています。 そのページには特許開示の方法も記載されています。 特定の特許が必須クレームを含むと考えられる場合、 W3C特許ポリシー第6節に従って情報を開示する必要があります。

1. 導入

レベル3の機能は依然として [css-conditional-3] で定義されており、まだここにはコピーされていません。

このレベルでは、@supports 規則に拡張を加え、サポートされているセレクターのテストを可能にします。

2. @supports 規則の拡張

この仕様のレベルでは、<supports-feature> 構文を次のように拡張します:

<supports-feature> = <supports-selector-fn> | <supports-decl>
<supports-selector-fn> = selector( <complex-selector> )
<supports-selector-fn>

UAが関数の引数として与えられたセレクターを サポートしている場合、結果はtrueとなります。

テスト
この例では、列結合子(||)がセレクターでサポートされているかどうかをテストし、サポートされていれば特定のテーブルセルのスタイルにそれを利用します。
@supports selector(col || td) {
  col.selected || td {
    background: tan;
  }
}

条件付きグループ規則内で使用されるすべての名前空間プレフィックスは、宣言されていなければなりません。そうでない場合は無効です [css-conditional-3]。 これにはselector関数内の名前空間プレフィックスも含まれます。

テスト
この例では、CSS修飾名を使った属性セレクターがサポートされているかどうかをチェックしていますが、名前空間プレフィックスが宣言されていないため無効です。
@supports selector(a[xlink|href]) {
  // do something, but fail
  }
}
この例では、CSS修飾名を使った属性セレクターがサポートされているかどうかをチェックしています。
@namespace x url(http://www.w3.org/1999/xlink);
@supports selector(a[x|href]) {
  // do something
  }
}

2.1. サポート定義の拡張

CSSプロセッサは、セレクターをパースエラーとして破棄せずに受理し、そのセレクターが未知の-webkit-疑似要素を含まない場合、CSSセレクターをサポートするとみなされます。

セキュリティに関する考慮事項

本書に対してセキュリティ問題は提起されていません。

プライバシーに関する考慮事項

selector()関数は、ユーザーのソフトウェアのバージョンや、特定の機能を有効化・無効化するなどの非デフォルト設定で動作しているかどうかなどの情報を提供する場合があります。

これらの情報は他のAPIからも取得可能です。 ただし、本仕様の機能もWeb上でこの情報が露出する手段のひとつです。

また、この情報は集約されることで、ユーザーのフィンガープリンティングの精度向上にも利用される可能性があります。

謝辞

編集者は、このモジュールの前レベルに貢献したすべての方々に感謝します。

変更履歴

2020年3月3日 初回公開作業草案以降の変更点

レベル3以降の追加点

適合性

文書の慣例

適合要件は記述的な断定とRFC 2119用語の組み合わせで表現されます。規範部分における「MUST」「MUST NOT」「REQUIRED」「SHALL」「SHALL NOT」「SHOULD」「SHOULD NOT」「RECOMMENDED」「MAY」「OPTIONAL」という語は、RFC 2119に記載されている通りに解釈されます。 ただし、可読性のため、これらの語は本仕様書ではすべて大文字では記載されません。

本仕様書のテキストは、明示的に非規範と示されているセクション、例、および注記を除き、すべて規範的です。[RFC2119]

本仕様書の例は、「for example」という語で始まるか、class="example"を指定して規範テキストから区別されています。次のような形です:

これは参考例の一例です。

参考注記は「Note」で始まり、class="note"を指定して規範テキストから区別されています。次のような形です:

注:これは参考注記です。

助言事項は、特別な注意を喚起するようにスタイルされた規範セクションであり、<strong class="advisement">を用いて他の規範テキストから区別されます。例: UAはアクセシブルな代替手段を必ず提供しなければなりません。

テスト

本仕様の内容に関するテストは、このような「テスト」ブロック内に記載される場合があります。 このようなブロックは、非規範です。


適合クラス

本仕様への適合は、次の3つの適合クラスに定義されています:

スタイルシート
CSS スタイルシート
レンダラー
UA(ユーザーエージェント)。スタイルシートの意味を解釈し、それらを使用する文書をレンダリングするもの。
オーサリングツール
UA(ユーザーエージェント)。スタイルシートを書き出すもの。

スタイルシートが本仕様に適合しているとは、このモジュールで定義された構文を使用するすべての文が、汎用CSS文法および各機能の個別文法に従って有効である場合を指します。

レンダラーが本仕様に適合しているとは、スタイルシートを適切な仕様で定義された通りに解釈することに加え、本仕様で定義されたすべての機能を正しくパースし、文書を正しくレンダリングすることです。ただし、デバイスの制限によってUA(ユーザーエージェント)が文書を正しくレンダリングできない場合でも、UAが非適合となるわけではありません。(例:モノクロモニターでは色のレンダリングは要求されません)

オーサリングツールが本仕様に適合しているとは、汎用CSS文法および本モジュールの各機能の個別文法に従って構文的に正しいスタイルシートを書き出し、本モジュールで記述されているスタイルシートのその他の適合要件も満たしている場合です。

部分的な実装

著者が前方互換パース規則を利用してフォールバック値を設定できるように、CSSレンダラーは必ず使えるレベルのサポートがない@規則、プロパティ、プロパティ値、キーワード、その他の構文要素を無効(適切に無視)として扱わなければなりません。特に、ユーザーエージェントは絶対に未対応の値を選択的に無視して、複数値プロパティ宣言のうち対応している値だけを適用してはなりません。値のうちいずれかが無効(未対応値は必ず無効)となる場合、CSSは宣言全体を無視する必要があります。

不安定および独自機能の実装

将来の安定したCSS機能との衝突を避けるため、 CSSWGはベストプラクティスに従って、不安定な機能や独自拡張の実装を行うことを推奨します。

非実験的な実装

仕様がCandidate Recommendationに到達した時点で、 非実験的な実装が可能となり、実装者は正しく仕様通りに実装できるCRレベルの機能についてはプレフィックスなしで公開すべきです。

CSSの相互運用性を確立・維持するため、CSSワーキンググループは、非実験的なCSSレンダラーがW3Cに実装報告書(必要に応じてその報告に使ったテストケースも)を提出した上で、CSS機能のプレフィックス無し実装を公開することを求めています。W3Cに提出されたテストケースは、CSSワーキンググループによるレビューおよび修正の対象となります。

テストケースや実装報告書の提出に関する詳細は、CSSワーキンググループのWebサイト https://www.w3.org/Style/CSS/Test/ を参照ください。 質問はpublic-css-testsuite@w3.org メーリングリストへ。

CR終了基準

この仕様を勧告案へ進めるためには、各機能について少なくとも2つの独立した相互運用可能な実装が必要です。各機能は異なる製品セットで実装されても構いません。すべての機能を単一製品で実装する必要はありません。この基準のために、以下の用語を定義します:

独立
各実装は異なる当事者によって開発され、他の適格な実装で使用されるコードを共有・再利用・派生してはなりません。本仕様の実装に関係しないコード部分はこの要件から除外されます。
相互運用可能
公式CSSテストスイートの該当テストケースをパスすること、または実装がWebブラウザでない場合は同等のテストをパスすること。同等のテストを用いて相互運用性を主張する場合は、そのテストにパスできる追加のUA(ユーザーエージェント)が同じ方法でパスできることが必要です。同等のテストはピアレビューのために公開されなければなりません。
実装
ユーザーエージェントであり、次を満たすもの:
  1. 仕様を実装していること。
  2. 一般に公開されていること。実装は出荷製品やその他の公開バージョン(β版、プレビューリリース、ナイトリービルドなど)であってもよい。出荷製品でない場合、該当機能を少なくとも1ヶ月以上実装して安定性を示す必要があります。
  3. 実験的でないこと(テストスイート合格専用に設計されたバージョンや通常利用を想定しないものは不可)。

仕様は少なくとも6ヶ月間Candidate Recommendationのまま維持されます。

索引

本仕様で定義された用語

参照によって定義されている用語

参考文献

規範的参考文献

[CSS-CONDITIONAL-3]
David Baron; Elika Etemad; Chris Lilley. CSS Conditional Rules Module Level 3. 2022年1月13日. CR. URL: https://www.w3.org/TR/css-conditional-3/
[CSS-VALUES-4]
Tab Atkins Jr.; Elika Etemad. CSS Values and Units Module Level 4. 2021年12月16日. WD. URL: https://www.w3.org/TR/css-values-4/
[RFC2119]
S. Bradner. Key words for use in RFCs to Indicate Requirement Levels. 1997年3月. Best Current Practice. URL: https://datatracker.ietf.org/doc/html/rfc2119
[SCROLL-ANIMATIONS]
Scroll-linked Animations. cg-draft. URL: https://wicg.github.io/scroll-animations/
[SELECTORS-4]
Elika Etemad; Tab Atkins Jr.. Selectors Level 4. 2018年11月21日. WD. URL: https://www.w3.org/TR/selectors-4/

参考的文献

[CSS-NAMESPACES-3]
Elika Etemad. CSS Namespaces Module Level 3. 2014年3月20日. REC. URL: https://www.w3.org/TR/css-namespaces-3/

課題索引

レベル3の機能は依然として[css-conditional-3]で定義されており、まだここにはコピーされていません。