この文書のステータス
1. 導入
レベル3の機能は依然として [css-conditional-3]
で定義されており、まだここにはコピーされていません。
このレベルでは、@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ヶ月以上実装して安定性を示す必要があります。
- 実験的でないこと(テストスイート合格専用に設計されたバージョンや通常利用を想定しないものは不可)。
仕様は少なくとも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/
課題索引