1. はじめに
これは CSS 封じ込めレベル 2 に対する差分仕様です。 現在、探索的作業草案です: 何かを実装する場合は、レベル 2 を参照してください。 CR に到達した時点で、レベル 2 のテキストをこの草案に統合します。
1.1. モジュール間の相互作用
この文書では、以前の仕様には存在しない新しい機能を定義します。 また、安定した時点で [CSS-CONTAIN-1] を置き換え、これに優先することを目的としています。
1.2. 値の定義
この仕様は、CSS プロパティ 定義規約([CSS2])に従い、値定義構文([CSS-VALUES-3])を使用します。 この仕様で定義されていない値型は、CSS Values & Units [CSS-VALUES-3] で定義されています。 他の CSS モジュールとの組み合わせにより、これらの値型の定義が拡張される場合があります。
各定義に記載されているプロパティ固有の値に加えて、 この仕様で定義されるすべてのプロパティは、 プロパティ値として CSS 全体キーワードも受け入れます。 読みやすさのため、これらは明示的に繰り返していません。
2. 強い封じ込め: contain プロパティ
CSS 封じ込め 2 § 2 強い封じ込め: contain プロパティ
| 名前: | contain |
|---|---|
| 新しい値: | layout || style || paint || [ size | inline-size ] |
- inline-size
-
この値は、要素に対して インラインサイズ封じ込めを有効にします。
これにより、そのインラインサイズを持つ主
ボックスが、その内容に直接依存することを防ぎます。
注: 間接的な依存関係は依然として存在し得ます。 § 3.1 インラインサイズ封じ込めを参照してください。
3. 封じ込めの種類
3.1. インラインサイズ封じ込め
要素に インラインサイズ封じ込めを与えると、そのサイズ 封じ込めが、インライン軸における 主ボックスのサイズ決定に適用されます。 これは、主ボックスのインライン軸における内在 サイズが、要素に内容がないかのように決定されることを意味します。 ただし、内容は通常どおり、ボックスのブロック軸の 内在サイズに影響し続け、 ボックスはブロック 軸で通常どおり断片化できます。
たとえば、スクロールバーが導入された場合、 その後、それらが不要になるほど結果として生じたブロックサイズ が小さくなったとしても、スクロールバーは削除されません。 または、ボックスの論理的な高さが、より下に配置された float と衝突し、clear によって下へ移動して、 より多くのインライン空間も利用できる場所へ移動した結果、 衝突しないほど短くなったとしても、 以前の問題のあるサイズと位置へ戻されることはありません。
したがって、インラインサイズ封じ込めは、 ボックスの内容が、そのインライン サイズに、インライン軸の内在 サイズを通じて直接影響することを防ぎますが、 そのインラインサイズは、内容がブロック サイズに与える影響を通じて、依然として間接的に内容へ依存する場合があります。
一般に、要素のインラインサイズ とそのブロックサイズの関係は 予測不能かつ非単調であり、 インラインサイズが変更されるにつれて、ブロックサイズは 任意に増減し得ます。 無限循環は、 制約を単純に解析すればそのような状態が許容される場合であっても、 レイアウトが以前の(問題があることが既知の)状態へ戻らないようにすることで防止されます。 言い換えれば、レイアウトは常に「前進」します。 現在の CSS レイアウト仕様にはこのような規則が組み込まれていると考えていますが、 そうなっていない部分がある場合は、 これらの誤りを修正できるよう CSSWG にお知らせください。
< section style = "width: 200px; border: solid; display: flow-root;" > < div style = "float: left; width: 50px; height: 80px; background: blue;" ></ div > < div style = "float: right; width: 50px; height: 80px; background: blue;" ></ div > < div style = "float: left; width: 160px; height: 80px; background: navy;" ></ div > < article style = "border: solid orangered; display: flow-root; min-width: min-content" > < div style = "background: orange; aspect-ratio: 1/1;" > 記事</ div > </ article > </ section >
ブロックレイアウトアルゴリズムは、まず浮動ボックスを配置します。 最初の 2 つはコンテナーの左隅と右隅に配置され、 3 つ目はその間に収まるには幅が広すぎるため、それらの下へ押し下げられます。
続いて article がレイアウトされます。
これは display:
flow-root であるため、
どの float とも交差できず、
自身のサイズと位置を決定するときに
それらを考慮しなければなりません。
レイアウトエンジンはまず、article をコンテナーの上端に揃えて配置しようとします。
その結果、幅は 100px となり、
その最小内容
サイズを収めるには十分な幅があります。
しかし、子の aspect-ratio により、
この場合 article の高さも 100px となり、
80px 下にある 3 つ目の float と交差してしまうため、
このレイアウト機会は破棄されます。
次に、article を 3 つ目の float の上端に揃え、
その右側にある幅 40px の狭い空間へ配置しようとします。
しかし、article の min-width により、
3 つ目の float の横にある幅 40px の空間に収まるには大きすぎるため、
これもその下へ移動し、
すべての浮動ボックスの下に 200px の正方形を形成します。
article から min-width を削除するか、
または article か header のいずれかにインラインサイズ封じ込めを追加すると(min-width: min-content がゼロに解決されるため)、
article は最終的な浮動 div の横に
40px の正方形として収まります(内容の一部がオーバーフローする可能性があります)。
この時点では、article の幅と高さ(それぞれ 40px)は、
最初に検討された空間へ、コンテナーの上端に揃えて
収まるはずです。
しかし、ボックスは以前の位置には戻されません。
レイアウトエンジンはすでに、
その位置では無効なレイアウトになることを把握しているためです。
要素に インラインサイズ封じ込めを与えても、次のいずれかが true の場合は効果がありません:
-
要素が主 ボックスを生成しない場合(display: contents や display: none の場合など)
-
その主ボックスが 内部テーブルボックスである場合
4. コンテナークエリー
メディアクエリーは、文書が表示されている ユーザーエージェントやデバイス環境の側面 (ビューポートの寸法やユーザー設定など)を問い合わせる方法を提供する一方で、コンテナークエリーは文書内の要素の側面 (ボックスの寸法や算出スタイルなど)を検査できます。
デフォルトでは、すべての要素はクエリーコンテナーであり、コンテナースタイルクエリーのために使用できます。 また、コンテナーサイズ クエリー用のクエリーコンテナーとして確立するには、 container-type プロパティ (または container 一括指定)を使用して追加のクエリー型を指定します。 クエリーコンテナーのシャドウを含む子孫に適用されるスタイル規則は、 @container 条件付きグループ規則を使用して、 そのコンテナーへの問い合わせを条件として適用できます。
main, aside{ container : my-layout / inline-size; } .media-object{ display : grid; grid-template : 'img' auto'content' auto /100 % ; } @container my-layout( inline-size >45 em ) { .media-object{ grid-template : 'img content' auto / auto1 fr ; } }
メイン領域とサイドバー領域のメディアオブジェクトは、 それぞれ自身のコンテナーコンテキストに応答します。
疑似要素を含むセレクターでは、 シャドウを含む包括的祖先である 最終 発生元要素によってクエリーコンテナーを確立できます。
-
疑似要素自体をクエリーコンテナーにすることはできません
-
::before、::after、::marker、および ::backdrop は、それぞれの 発生元要素を問い合わせます
-
::first-letter と ::first-line は、それぞれの発生元要素を問い合わせます。 仮想タグ列によって、 継承およびレンダリングのために
::first-lineが他の要素を越えて移動する場合でも同様です -
複数の疑似要素があっても、ある疑似要素を別の疑似要素のクエリー コンテナーにすることはできません。たとえば、
host::part()::beforeにおける::beforeのクエリーコンテナーには、::part()ではなくホストを使用できます。同様に、div::before::markerにおける::markerのクエリーコンテナーとして::beforeを使用することはできません -
::slotted() セレクターは、シャドウツリー内の クエリーコンテナーを問い合わせることができ、 スロット自体も含まれます
-
::part() セレクターは、その発生元ホストを問い合わせることはできますが、 シャドウツリー内部の クエリーコンテナーを問い合わせることはできません
-
::placeholder と ::file-selector-button は input 要素を問い合わせることができますが、input 要素が シャドウツリーを使用して実装されている場合、内部コンテナーは公開されません
< style > # container { width : 100 px ; container-type : inline - size ; } @ container ( inline-size < 150px ) { # inner :: before { content : "前" ; } } </ style > < div id = container > < span id = inner ></ span > </ div >
< div id = host style = "width:200px" > < template shadowroot = open > < style > # container { width : 100 px ; container-type : inline - size ; } @ container ( inline-size < 150px ) { :: slotted ( span ) { color : green ; } } </ style > < div id = container > < slot /> </ div > </ template > < span id = slotted > 緑</ span > </ div >
4.1. クエリーコンテナーの作成: container-type プロパティ
| 名前: | container-type |
|---|---|
| 値: | normal || [ size | inline-size ] |
| 初期値: | normal |
| 適用対象: | すべての要素 |
| 継承: | しない |
| パーセンテージ: | 該当なし |
| 算出値: | キーワード normal、または size、inline-size の 1 つ以上 |
| 正規順序: | 文法に従う |
| アニメーション型: | アニメーション不可 |
container-type プロパティは、明示的な封じ込めを必要とする コンテナー クエリー(コンテナー サイズクエリーなど)のために、要素を クエリーコンテナーとして確立し、 その子孫をスタイル設定するスタイル規則が そのサイズ決定やレイアウトのさまざまな側面を問い合わせ、 それに応じて応答できるようにします。
特に記載がない限り、 すべての要素は、明示的な封じ込めを必要としないコンテナークエリー(コンテナー スタイルクエリーなど)のためのクエリー コンテナーであり、 指定された container-type に関係なくそうなります。
各値の意味は次のとおりです:
- size
- クエリー コンテナーを、コンテナーサイズクエリーのために、インライン およびブロック軸の両方で確立します。 レイアウト封じ込め、スタイル封じ込め、 およびサイズ封じ込めを主 ボックスに適用します。
- inline-size
- コンテナー自身のインライン軸上のコンテナーサイズクエリー用にクエリー コンテナーを確立します。 レイアウト封じ込め、スタイル封じ込め、 およびインラインサイズ封じ込めを主 ボックスに適用します。
- normal
- 要素は、いかなるコンテナーサイズクエリーについてもクエリーコンテナーではありませんが、 コンテナースタイルクエリーについては引き続きクエリーコンテナーです。
aside, main{ container-type : inline-size; } h2{ font-size : 1.2 em ; } @container ( width >40 em ) { h2{ font-size : 1.5 em ; } }
クエリー条件で使用される 40em の値は、 関連するクエリーコンテナー上の font-size の算出値を基準とします。
section{ container-type : style; } @container ( --cards: small) { article{ border : thin solid silver; border-radius : 0.5 em ; padding : 1 em ; } }
4.2. クエリーコンテナーの命名: container-name プロパティ
| 名前: | container-name |
|---|---|
| 値: | none | <custom-ident>+ |
| 初期値: | none |
| 適用対象: | すべての要素 |
| 継承: | しない |
| パーセンテージ: | 該当なし |
| 算出値: | キーワード none、または順序付きの識別子のリスト |
| 正規順序: | 文法に従う |
| アニメーション型: | アニメーション不可 |
container-name プロパティは、 クエリーコンテナー名のリストを指定します。 これらの名前は @container 規則によって使用され、 どのクエリー コンテナーを対象とするかを絞り込めます。
- none
- クエリーコンテナーは クエリー コンテナー名を持ちません。
- <custom-ident>
- クエリーコンテナー名を識別子として指定します。 キーワード none、and、not、および or は、この <custom-ident> から除外されます。
main{ container-type : size; container-name : my-page-layout; } .my-component{ container-type : inline-size; container-name : my-component-library; } @container my-page-layout( block-size >12 em ) { .card{ margin-block : 2 em ; } } @container my-component-library( inline-size >30 em ) { .card{ margin-inline : 2 em ; } }
4.3. 名前付きコンテナーの作成: container 一括指定
| 名前: | container |
|---|---|
| 値: | <'container-name'> [ / <'container-type'> ]? |
| 初期値: | 各プロパティを参照 |
| 適用対象: | 各プロパティを参照 |
| 継承: | 各プロパティを参照 |
| パーセンテージ: | 各プロパティを参照 |
| 算出値: | 各プロパティを参照 |
| アニメーション型: | 各プロパティを参照 |
| 正規順序: | 文法に従う |
container 一括指定プロパティは、 container-type と container-name の両方を同じ宣言で設定します。 <'container-type'> が省略された場合、 その初期値にリセットされます。
main{ container : my-layout / size; } .grid-item{ container : my-component / inline-size; }
4.4. コンテナークエリー: @container 規則
@container 規則は、 条件が コンテナークエリーである条件付きグループ規則です。 コンテナークエリーは、コンテナーサイズクエリーおよび/またはコンテナースタイルクエリーのブール結合です。 @container 規則の <stylesheet> ブロック内のスタイル宣言は、 その条件によってフィルター処理され、 それらの要素のクエリーコンテナーに対してコンテナークエリーが true の場合にのみ一致します。
@container 規則の構文は次のとおりです:
@container [ <container-name> ]? <container-condition> {
<stylesheet>
}
ここで:
<container-name> = <custom-ident>
<container-condition> = not <query-in-parens>
| <query-in-parens> [ [ and <query-in-parens> ]* | [ or <query-in-parens> ]* ]
<query-in-parens> = ( <container-condition> )
| ( <size-feature> )
| style( <style-query> )
| <general-enclosed>
<style-query> = <style-condition> | <style-feature>
<style-condition> = not <style-in-parens>
| <style-in-parens> [ [ and <style-in-parens> ]* | [ or <style-in-parens> ]* ]
<style-in-parens> = ( <style-condition> )
| ( <style-feature> )
| <general-enclosed>
キーワード none、and、not、および or は、上記の <custom-ident> から除外されます。
各要素について、 問い合わせ対象となるクエリーコンテナーは、 要素の祖先にあるクエリーコンテナーのうち、 <container-condition> 内のすべてのコンテナー機能について 有効なクエリーコンテナーとして確立されているものから選択されます。 オプションの <container-name> は、考慮されるクエリーコンテナーの集合を、 一致するクエリーコンテナー名を持つものだけに絞り込みます。
要素について適格なクエリー コンテナーが選択されると、 <container-condition> 内の各コンテナー機能は、 そのクエリーコンテナーに対して評価されます。 適格なクエリーコンテナーとなる祖先が存在しない場合、 その要素に対するコンテナークエリーは unknown です。
@container card( inline-size >30 em ) andstyle ( --responsive: true) { /* スタイル */ }
上記のスタイルは、 "card" という名前の祖先コンテナーが存在し、 inline-size 条件とスタイル条件の両方を満たす場合にのみ適用されます。
複数の入れ子になったコンテナークエリー内の要素に定義されたスタイル規則は、 それを囲むすべてのコンテナークエリーがその要素について true の場合に適用されます。
注: 入れ子になったコンテナークエリーは、異なるコンテナーとの関係で評価されることがあるため、 個々の <container-condition> を 単一のクエリーへまとめられるとは限りません。
@container card( inline-size >30 em ) { @container style ( --responsive: true) { /* スタイル */ } }
上記のスタイルは、 "card" という名前の祖先コンテナーが存在し、 inline-size 条件を満たし、 さらにスタイル条件を満たす 祖先コンテナーが存在する場合にのみ適用されます。
@keyframes、@font-face、または @layer のような、グローバルで名前を定義するat 規則がコンテナークエリー内で定義されても、 コンテナークエリー条件による制約は受けません。
4.5. アニメーションするコンテナー
コンテナークエリーの評価の変化は、 その変化がアニメーション 効果によって生じた場合でも、スタイル 変更イベントの一部でなければなりません。
main{ display : flex; width : 300 px ; } #container{ container-type : inline-size; flex : 1 ; } /* 解決された幅は最初 200px だが、#sibling 上の トランジションが進行するにつれて変化する。 */ #inner{ transition : 1 s background-color; background-color : tomato; } /* このコンテナークエリーの適用が開始(または停止)されたとき、 #inner の background-color 上でトランジションを開始しなければならない。 */ @container ( width <=150 px ) { #inner{ background-color : skyblue; } } #sibling{ width : 100 px ; transition : width1 s ; } #sibling:hover{ width : 200 px ; }
< main > < div id = container > < div id = inner > 内部</ div > </ div > < div id = sibling > 兄弟</ div > </ main >
コンテナークエリー長単位によって生じる 算出値の変更も、 スタイル変更イベントの一部でなければなりません。
5. コンテナー機能
コンテナー機能は、 クエリーコンテナーの特定の側面を問い合わせます。
5.1. サイズコンテナー機能
コンテナーサイズ クエリーは、 クエリー コンテナーの主ボックスのサイズを問い合わせることができます。 これは、それぞれクエリー コンテナーの単一の特定の寸法機能を問い合わせる 個々の サイズ機能 (<size-feature>)の ブール結合です。 <size-feature> の構文は、メディア機能と同じです: 機能名、比較演算子、および値です。[mediaqueries-5] サイズ機能をサイズクエリーへ結合するブール構文と論理は、 CSS 機能クエリーの場合と同じです。 (@supports を参照。[CSS-CONDITIONAL-3])
クエリーコンテナーが 主ボックスを持たない場合、 または主ボックスがレイアウト封じ込めボックスではない場合、 またはクエリーコンテナーが関連する軸上のコンテナーサイズクエリーをサポートしていない場合、 サイズ機能の評価結果は unknown です。
相対長単位 (コンテナークエリー長単位を含む)は、 コンテナークエリー 条件内では、 クエリー コンテナーの算出 値に基づいて評価されます。
注: これは メディアクエリーにおける相対単位の扱いとは異なります。
aside, main{ container-type : inline-size; } aside{ font-size : 16 px ; } main{ font-size : 24 px ; } @container ( width >40 em ) { h2{ font-size : 1.5 em ; } }
クエリー条件で使用される 40em の値は、 関連するクエリーコンテナー上の font-size の算出値を基準とします:
-
aside 内の任意の h2 では、 クエリー条件は 640px を超えると true になります。
-
main 内の任意の h2 では、 クエリー条件は 960px を超えると true になります。
5.1.1. 幅: width 機能
| 名前: | width |
|---|---|
| 対象: | @container |
| 値: | <length> |
| 型: | 範囲 |
width コンテナー機能は、クエリーコンテナーのコンテンツボックスの幅を問い合わせます。
5.1.2. 高さ: height 機能
| 名前: | height |
|---|---|
| 対象: | @container |
| 値: | <length> |
| 型: | 範囲 |
height コンテナー機能は、クエリーコンテナーのコンテンツボックスの高さを問い合わせます。
5.1.3. インラインサイズ: inline-size 機能
| 名前: | inline-size |
|---|---|
| 対象: | @container |
| 値: | <length> |
| 型: | 範囲 |
inline-size コンテナー機能は、 クエリー コンテナーのインライン軸における、 クエリーコンテナーのコンテンツボックスのサイズを問い合わせます。
5.1.4. ブロックサイズ: block-size 機能
| 名前: | block-size |
|---|---|
| 対象: | @container |
| 値: | <length> |
| 型: | 範囲 |
block-size コンテナー機能は、 クエリー コンテナーのブロック軸における、 クエリーコンテナーのコンテンツボックスのサイズを問い合わせます。
5.1.5. アスペクト比: aspect-ratio 機能
| 名前: | aspect-ratio |
|---|---|
| 対象: | @container |
| 値: | <ratio> |
| 型: | 範囲 |
aspect-ratio コンテナー機能は、 width コンテナー 機能の値と、height コンテナー機能の値との比として定義されます。
5.1.6. 向き: orientation 機能
| 名前: | orientation |
|---|---|
| 対象: | @container |
| 値: | portrait | landscape |
| 型: | 離散 |
- portrait
- height コンテナー 機能の値が width コンテナー 機能の値以上の場合、 orientation コンテナー機能は portrait です。
- landscape
- それ以外の場合、orientation は landscape です。
5.2. スタイルコンテナー機能
コンテナースタイル クエリーは、 クエリーコンテナーの算出値を問い合わせることができます。 これは、それぞれクエリー コンテナーの単一の特定のプロパティを問い合わせる 個々の スタイル 機能(<style-feature>)のブール結合です。 <style-feature> の構文は、宣言 [CSS-SYNTAX-3] と同じであり、 指定されたプロパティのクエリーコンテナー上の 算出値が指定された値 (これもクエリーコンテナーを基準に算出される)と一致する場合、そのクエリーは true、 プロパティまたはその値が無効あるいはサポートされていない場合は unknown、 それ以外の場合は false です。 スタイル機能をスタイルクエリーへ結合するブール構文と論理は、 CSS 機能クエリーの場合と同じです。 (@supports を参照。[CSS-CONDITIONAL-3])
スタイル機能が 一括指定プロパティを問い合わせる場合、その各ロングハンドプロパティについて算出 値が一致すれば true、 それ以外の場合は false です。
カスケード依存キーワード(revert や revert-layer など)は、 スタイル 機能内の値としては無効であり、コンテナースタイルクエリーを false にします。
注: 残りのカスケードに依存しないCSS 全体 キーワードは、他の値と同様に、クエリーコンテナーを基準に算出されます。
6. コンテナー相対長: cqw、cqh、cqi、cqb、cqmin、cqmax 単位
コンテナークエリー長単位は、 クエリー コンテナーの寸法に対する相対的な長さを指定します。 コンテナークエリー長単位を使用するスタイルシートでは、 コンポーネントをあるクエリーコンテナーから別のコンテナーへ より簡単に移動できます。
コンテナー クエリー長単位は次のとおりです:
| 単位 | 基準 |
|---|---|
| cqw | クエリー コンテナーの幅の 1% |
| cqh | クエリー コンテナーの高さの 1% |
| cqi | クエリー コンテナーのインラインサイズの 1% |
| cqb | クエリー コンテナーのブロック サイズの 1% |
| cqmin | cqi または cqb の小さい方の値 |
| cqmax | cqi または cqb の大きい方の値 |
各要素について、コンテナークエリー長単位は、 その単位によって記述される関連する軸(または複数の軸)上のコンテナーサイズ クエリーとして評価されます。 各軸のクエリーコンテナーは、 その軸上のコンテナーサイズクエリーを受け入れる 最も近い祖先コンテナーです。 適格なクエリーコンテナーが利用できない場合、 その軸には小ビューポートサイズを使用します。
注: 場合によっては、同じ要素上の cqi と cqb 単位が、 異なるクエリーコンテナーを基準に評価されることがあります。 同様に、cqmin と cqmax 単位は、 cqi と cqb 単位の大きい方または小さい方を表します。 これらの寸法が異なるクエリーコンテナーから得られる場合でも同様です。
子要素は、親に指定された相対値を継承するのではなく、 算出値を継承します。
/* フォールバック値は封じ込めに依存しない */ h2{ font-size : 1.2 em ; } @container ( inline-size >=0 px ) { /* inline-size コンテナーが利用可能な場合にのみ適用される */ h2{ font-size : calc ( 1.2 em +1 cqi ); } }
7. API
7.1.
CSSContainerRule インターフェイス
CSSContainerRule
インターフェイスは @container 規則を表します。
[Exposed =Window ]interface :CSSContainerRule CSSConditionRule { };
- 型
CSSOMStringのconditionText(CSSConditionRule 上の属性に対する CSSContainerRule 固有の定義) conditionText属性(親規則CSSConditionRule上で定義)は、 取得時に、指定された条件を、 論理的な簡略化を行わずに返さなければなりません。 これにより、返された条件は、 この仕様に適合する任意の実装において、 指定された条件と同じ結果へ評価されます。 (この仕様の <general-enclosed> 拡張性機構によって許可される 将来の拡張を実装する実装を含みます)。 言い換えると、 トークンストリームの簡略化は許可されます (空白を 1 個のスペースへ減らす、 または省略可能であることが既知の場合に省略するなど)が、 論理的な簡略化(不要な括弧の削除や、 評価結果に基づく簡略化など)は許可されません。
CSSContainerRule 用の CSSOM API を追加する [Issue #7033]
コンテナークエリーには
matchContainer メソッドがあるべきです。
これは matchMedia()
および MediaQueryList
インターフェイスをモデルとしますが、
Window ではなく Element に適用されます。
レイアウトサイズを測定するときは resizeObserver と同様に動作しますが、
追加のコンテナークエリー構文と機能を提供します。[Issue #6205]
8. 要素の内容を完全に抑制する: content-visibility プロパティ
CSS 封じ込め 2 § 4 要素の内容を完全に抑制する: content-visibility プロパティ
9. プライバシーとセキュリティに関する考慮事項
CSS 封じ込め 2 § 5 プライバシーと セキュリティに関する考慮事項
付録 A. 変更点
この付録は参考情報です。
2021年12月21日の最初の 公開作業草案以降の変更点
2021年12月21日の 最初の公開作業草案以降の主な変更点は次のとおりです:
-
container-name の算出値に 重複する識別子を含めることを許可しました。 (Issue 7181)
-
container 一括指定内の <'container-name'> を必須にしました。 (Issue 7142)
-
コンテナースタイルクエリーにおける一括指定プロパティの扱いを明確化しました。 (Issue 7095)
-
カスケード依存キーワードをスタイル機能の値として使用することを禁止し、 使用した場合はコンテナースタイルクエリーが false になるようにしました。 (Issue 7080)
-
container-type の初期値を style に変更しました。 (Issue 6393)
-
単一軸のブロックサイズ封じ込めは現在不可能なため、 container-type から block-size 値を削除しました。 (Issue 1031)
-
container-name 構文から <string> オプションを削除しました。 コンテナー名は <custom-ident> でなければなりません。 (Issue 6405)
-
container 一括指定プロパティ内の <'container-name'> と <'container-type'> の順序を逆にし、 両方を省略可能にしました。 (Issue 6393)
-
前方互換性のため、 <container-condition> 内で <general-enclosed> 構文を許可しました。 (Issue 6396)
-
<size-feature> クエリーから size 関数構文を削除しました。 (Issue 6870)
-
クエリー コンテナーの選択処理を、 必要な container-type を考慮するよう更新し、 明示的な型選択構文を削除しました。 (Issue 6644)
-
延期された状態クエリー機能を削除しました。 (Issue 6402)
-
疑似要素および Shadow DOM 周辺のコンテナー選択を明確化しました。 (Issue 5984 および Issue 6711)
CSS 封じ込めレベル 2 からの変更点
-
インラインサイズ封じ込めを導入しました。
-
コンテナー クエリーに必要な用語、プロパティ、単位、および at 規則を定義しました
謝辞
Adam Argyle、 Amelia Bellamy-Royds、 Anders Hartvoll Ruud、 Brian Kardell、 Chris Coyier、 Christopher Kirk-Nielsen、 David Herron、 Elika J. Etemad (fantasai)、 Eric Portis、 Ethan Marcotte、 Geoff Graham、 Gregory Wild-Smith、 Ian Kilpatrick、 Jen Simmons、 Kenneth Rohde Christiansen、 L. David Baron、 Lea Verou、 Martin Auswöger、 Martine Dowden、 Mike Riethmuller、 Morten Stenshorne、 Nicole Sullivan、 Rune Lillesveen、 Scott Jehl Scott Kellum、 Stacy Kvernmo、 Theresa O’Connor、 Una Kravets、 およびその他多くの方々からのコメントや以前の成果が、この仕様に貢献しました。