CSSオーバーフローモジュール レベル4

W3C作業草案,

この文書の詳細
このバージョン:
https://www.w3.org/TR/2023/WD-css-overflow-4-20230321/
最新公開バージョン:
https://www.w3.org/TR/css-overflow-4/
編集者ドラフト:
https://drafts.csswg.org/css-overflow-4/
履歴:
https://www.w3.org/standards/history/css-overflow-4
フィードバック:
CSSWGイシューレポジトリ
仕様内インライン
編集者:
L. David Baron (Mozilla)
Florian Rivoal (Bloombergを代表して)
Elika J. Etemad / fantasai (招待専門家)
この仕様への編集提案:
GitHub エディター

概要

このモジュールは、視覚メディアにおけるスクロール可能なオーバーフロー処理に関連するCSSの機能を含みます。 CSSオーバーフローモジュール レベル3を基盤とし、 line-clamp、そのロングハンド、および旧来の標準化前の構文を定義します。 block-ellipsisプロパティを追加し、 overflow-clip-marginをロングハンドで拡張します。 付録には、フラグメンテーションによるオーバーフローのリダイレクトのより実験的な探求も含まれています。

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

この文書のステータス

このセクションは、発行時点でのこの文書のステータスを説明します。 現在のW3C公開物の一覧と、この技術レポートの最新リビジョンは W3C技術レポートインデックス https://www.w3.org/TR/にてご覧いただけます。

この文書はCSSワーキンググループにより 作業草案として 勧告トラックを用いて公開されました。 作業草案として公開されても、W3Cおよびその会員による支持を意味するものではありません。

この文書はドラフトであり、 随時更新、置換、または他の文書によって廃止される場合があります。 進行中の作業以外としてこの文書を引用することは適切ではありません。

フィードバックは GitHub上でissueを提出(推奨)するか、 タイトルに仕様コード「css-overflow」を含めてください(例: “[css-overflow] …コメント概要…”)。 すべてのissueやコメントはアーカイブされます。 または、意見は(アーカイブ済み)公開メーリングリスト www-style@w3.orgへ送信いただくことも可能です。

この文書は2021年11月2日W3Cプロセス文書に準拠します。

この文書はW3C特許方針のもと運用されているグループによって作成されました。 W3Cは、グループの成果物に関連して提出された特許開示の公開リストを管理しています。 そのページには特許開示の方法も記載されています。 特許の内容を実際に知っていて、それが必須クレームを含むと信じる者は、 W3C特許方針第6節に従って情報開示しなければなりません。

1. はじめに

この仕様は、[CSS-OVERFLOW-3]を拡張します。 主なセクションは以下の通りです:

オーバーフローのスクロールと切り取り制御

このセクションでは、overflow-*プロパティ レベル3への比較的シンプルな拡張を定義します。

自動省略記号

このセクションでは、*-ellipsisプロパティ レベル3への実験的な拡張を定義します。

オーバーフローのリダイレクト

このセクションでは、オーバーフローを新しく生成されたフラグメンテーションコンテナへリダイレクトするための、 非常に実験的な新しいモデルを定義します。

注意: 本文執筆時点では、[CSS-OVERFLOW-3]はまだ完全には確定していません。 意図しない分岐や保守の負担を避けるため、 この仕様はcss-overflowレベル3の差分仕様として記述されています。 レベル3仕様が最終確定したら、その内容は本仕様に統合され、 本仕様がレベル3を置き換えることになります。 それまでの間、本仕様にはレベル3への追加・拡張のみが含まれます。

1.1. 値の定義

この仕様は、CSSプロパティ定義の慣例[CSS2])に従い、 値定義構文[CSS-VALUES-3])を使用しています。 この仕様で定義されていない値型は、CSS Values & Units [CSS-VALUES-3]で定義されています。 他のCSSモジュールとの組み合わせによって、これらの値型の定義が拡張される場合があります。

各プロパティの定義に記載されたプロパティ専用値に加え、 本仕様で定義される全てのプロパティは CSS全域キーワードもプロパティ値として受け付けます。 読みやすさのため明示的に繰り返していません。

1.2. モジュールの相互作用

このモジュールは、[CSS-OVERFLOW-3]で定義された機能を拡張します。

2. オーバーフローの概念と用語

レベル3の内容が確定したらコピーしてください。

3. オーバーフローのスクロールと切り取り

レベル3の内容が確定したらコピーしてください。

3.1. オーバーフローの管理:overflow-xoverflow-y、およびoverflowプロパティ

このレベルでは、overflow-xおよびoverflow-yプロパティ (およびoverflow 略記) を置換要素にも適用できるよう拡張します。

置換要素においては、 使用値visible以外のすべての算出値について clipとなります。 ホスト言語は、UAスタイルシートの規則を定義し、 そのような要素に対してデフォルト値としてclipを適用し、 overflow-clip-margincontent-boxに設定する必要があります。

注意: overflow置換要素への適用は、 画像がレイアウトボックスの外側に効果を描画できるようにするために追加されました。 推奨されるUAスタイルシートの規則は、デフォルトで元の挙動を実現するためのものです。 詳細はIssue 7059Issue 7144の議論を参照してください。 これはCSS2.1からの変更点であり、リスクがあります。

overflow置換要素への適用は、まだ調整中です。[Issue #7144]

3.2. 切り取り範囲の拡張:overflow-clip-margin-*プロパティ

名前: overflow-clip-margin-top, overflow-clip-margin-right, overflow-clip-margin-bottom, overflow-clip-margin-left, overflow-clip-margin-block-start, overflow-clip-margin-inline-start, overflow-clip-margin-block-end, overflow-clip-margin-inline-end
値: <visual-box> || <length [0,∞]>
初期値: 0px
適用対象: overflowが適用されるボックス
継承: しない
パーセンテージ: 個別プロパティを参照
算出値: 算出された<length><visual-box>キーワード
アニメーション型: <visual-box>値が一致する場合は算出値ごと、それ以外は離散
正規順序: 構文規則に従う
論理プロパティグループ: overflow-clip-margin
名前: overflow-clip-margin, overflow-clip-margin-inline, overflow-clip-margin-block
値: <visual-box> || <length [0,∞]>
初期値: 0px
適用対象: overflowが適用されるボックス
継承: しない
パーセンテージ: 個別プロパティを参照
算出値: 個別プロパティを参照
アニメーション型: 個別プロパティを参照
正規順序: 構文規則に従う

これらのプロパティおよびその略記は、 ボックスのオーバーフロークリップ端を定義します。 つまり、ボックスの境界からどれだけ外側まで ボックスの内容が描画可能となり、 どの時点で(overflow: clipなどの) 効果によってクリップされるかを正確に決定します。 オーバーフロークリップ端でクリップすることが定義されている効果に該当します。 略記/ロングハンドの関係は、 marginと同様ですが、 略記には制限された構文がありますので注意してください。

値の定義は以下の通りです:

<visual-box>

指定したボックス端をオーバーフロークリップ端の起点として使用します。 つまり、オフセットがゼロの場合です。

省略した場合、 置換要素でない場合はpadding-box置換要素の場合はcontent-boxがデフォルトとなります。

overflow-clip-margin置換要素への適用は、まだ調整中です。[Issue #7144]

<length [0,∞]>

指定したオフセットは、 オーバーフロークリップ端が 指定したボックス端からどれだけ広がるかを決定します。 負の値は無効です。 省略した場合はゼロがデフォルトです。

オーバーフロークリップ端の角の形状は、 ボックスの境界端から同じ累積オフセット分だけ広がった 外部ボックスシャドウと まったく同じ方法で形作られます。 CSS Backgrounds 3 § 4.2 Corner Shaping および CSS Backgrounds 3 § 6.1.1 シャドウの形状・広がり・ノックアウトを参照し、 特に境界端を超えるアウトセットの式に注意してください。

注意: このプロパティは overflow: hiddenoverflow: scrollのボックスには効果がありません。 それらはオーバーフロークリップ端を使うことが定義されていません。

4. 自動省略記号

4.1. インラインオーバーフロー省略記号:text-overflowプロパティ

名前: text-overflow
値: [ clip | ellipsis | <string> | fade | <fade()> ]{1,2}
初期値: clip
適用対象: ブロックコンテナ
継承: しない
パーセンテージ: ラインボックスの幅を参照
算出値: 指定通り、長さは絶対値に変換
正規順序: 構文規則に従う
アニメーション型: 算出値タイプによる

このセクションは[CSS-OVERFLOW-3]に再同期が必要な場合があります。

このプロパティは、インラインコンテンツが、そのブロックコンテナ要素(「ブロック」)のインライン進行方向のラインボックス端をオーバーフローする際、 overflowvisible以外である場合の描画を指定します。

このプロパティは継承されませんが、 ラインボックスのインライン整形コンテキストを確立するために生成される匿名ブロックコンテナボックス(block container参照)は無視され、 実際に適用されるプロパティ値は非匿名ボックス上のものとなります。これは例7の「入れ子段落」部分で確認できます。 「NESTED」という語が匿名ブロックコンテナにラップされ、その text-overflowプロパティが初期値であっても、省略記号が表示されています。

テキストがオーバーフローするのは、例えば折り返し禁止(white-space: nowrap)や、単語が長すぎて収まらない場合です。 各値の意味は次の通りです:

clip
オーバーフローしたインラインコンテンツをブロックコンテナ要素でクリップします。 文字が部分的に描画される場合があります。
ellipsis
切り取られたインラインコンテンツを表すため、エリプシス文字(U+2026)を描画します。 実装によっては、より言語・スクリプト・書字方向に適した省略記号を代用したり、 エリプシス文字が利用できない場合は「...」で代用することもあります。
<string>
切り取られたインラインコンテンツを表すため、指定された文字列を描画します。 指定文字列は双方向処理のため独立した段落として扱われます。
fade( [ <length> | <percentage> ] )
ラインボックスをオーバーフローしたインラインコンテンツをクリップします。 文字が部分的に描画される場合があります。 さらに、UAはラインボックス端付近でフェードアウト効果を適用し、 端で完全に透明になる必要があります。

フェードアウトの計算方法を定義し、ブラウザ間でフェードが同じになるようにすべきか? mask-image: linear-gradient(to right, rgba(0,0,0,1), rgba(0,0,0,0))のようなものが望ましいが、該当部分のみに適用する必要があります。

引数はフェード効果の適用距離を決定します。 <percentage>はラインボックスの幅に対して解決されます。 0未満の値は0にクリップされます。 ラインボックスの幅より大きい値は幅にクリップされます。

ラインボックスがフェード効果の長さに足りない場合、 効果を省略すべきか、適用距離を縮めるべきか、フェード端をクリップすべきか?

ラインボックス外へのオーバーフローや重なりをどう扱うべきか? フェードは論理的な行内容に適用すべきか、物理的なラインボックス領域にすべきか、両者の交差部分にすべきか?

fade
fade()と同じですが、 フェード効果の距離はUAによって決定されます。1emが妥当な値として推奨されています。

このプロパティ定義で使われている「文字」は、可読性のためで、実装上は「書記素クラスタ」[UAX29]を指します。

値が1つの場合は、endラインボックス端にのみ適用されます。 値が2つの場合は、1つ目がline-left端に、 2つ目がline-right端に適用されます。 endline-leftline-rightの用語定義は[CSS-WRITING-MODES-3]を参照してください。

注意:値が2つの場合にline-leftline-rightを使う理由は、startend ではなく、矢印などの方向性文字の利用を容易にするためです。

ellipsisやstring値の場合、 実装は、必要に応じて該当端の文字や原子的インラインレベル要素を隠し、 省略記号/文字列を残りインラインコンテンツの端に直ちに隣接して配置する必要があります。 行の先頭の文字や原子的インラインレベル要素は、 省略記号でなくクリップされる必要があります。

双方向テキスト省略記号の例

これらの例は、双方向状況で省略記号を表示するためにどの文字が隠されるかを示しています。 行の端に視覚的に配置された文字が対象となります。

CSS例:

div {
  font-family: monospace;
  white-space: pre;
  overflow: hidden;
  width: 9ch;
  text-overflow: ellipsis;
}

HTML断片・レンダリング例・あなたのブラウザ:

HTML 参照レンダリング あなたのブラウザ
<div>שלום 123456</div>
123456 ם…
שלום 123456
<div dir=rtl>שלום 123456</div>
…456 שלום
שלום 123456

省略動作の詳細

省略記号とのユーザー操作

text-overflowの例

これらの例は、テキストが要素サイズをオーバーフローするブロックコンテナのtext-overflowを設定する様子を示します:

divのCSS例:

div {
  font-family: Helvetica, sans-serif;
  line-height: 1.1;
  width: 3.1em;
  border: solid .1em black;
  padding: 0.2em; margin:1em 0;
}

HTML断片・レンダリング例・あなたのブラウザ:

HTML レンダリング例 あなたのブラウザ
<div>
CSS IS AWESOME, YES
</div>
まず、テキストがボックス外に描画されている例です。
CSS IS AWESOME, YES
<div style="text-overflow:clip; overflow:hidden">
CSS IS AWESOME, YES
</div>
次に、テキストがボックス外でクリップされた例です。
CSS IS AWESOME, YES
<div style="text-overflow:ellipsis; overflow:hidden">
CSS IS AWESOME, YES
</div>
さらに、クリップされたテキストを示す省略記号がある例です。
CSS IS AWESOME, YES
<div style="text-overflow:ellipsis; overflow:hidden">
NESTED
 <p>PARAGRAPH</p>
WON’T ELLIPSE.
</div>
入れ子段落と匿名ブロックボックスの等価性・入れ子要素への非継承を示す例です。
NESTED

PARAGRAPH

WON’T ELLIPSE.
<div style="text-overflow:fade; overflow:hidden">
CSS IS AWESOME, YES
</div>
テキストがオーバーフロー部分でフェードアウトする例です。
CSS IS AWESOME, YES

注意:省略記号が配置される側は、ブロックのdirectionに依存します。 例:overflow hiddenで右から左(direction: rtl)のブロックは、インラインコンテンツを側でクリップし、 省略記号は側に配置され、クリップされた内容を表します。

この注意の図示用RTL例図を挿入してください。

省略記号とスクロールインターフェースの連携

このセクションは、text-overflow:clip以外のtext-overflow(非clipなtext-overflow)かつoverflow:scrollな要素に適用されます。

非clipなtext-overflowを持つ要素において、テキストのインライン進行方向でoverflowがscrollとなり、 ブラウザがスクロールの仕組み(例:要素上のスクロールバーや、スワイプスクロールできるタッチインターフェース等)を提供する場合は、 より良いユーザー体験のため、追加の実装詳細があります:

要素がスクロールされると(ユーザー操作やDOM操作によって)、 より多くの要素内容が表示されます。 text-overflowの値は、より多くの内容が表示されるかどうかには影響しません。 非clipなtext-overflowが設定されている場合は、 スクロールによって表示される内容が増えるたびに、 実装は追加で表示可能な内容全てを表示し、 クリップされるべき内容(または省略記号/文字列の表示のために必要な内容)のみを切り捨てます。 要素が十分にスクロールされて内容端が表示されたときは、 その内容を省略記号/文字列の代わりに表示する必要があります。

この例はoverflow scrollな要素にtext-overflowを使い、上記の挙動を示します。

CSS例:

div.crawlbar {
  text-overflow: ellipsis;
  height: 2em;
  overflow: scroll;
  white-space: nowrap;
  width: 15em;
  border:1em solid black;
}

HTML断片例:

<div class="crawlbar">
CSS is awesome, especially when you can scroll
to see extra text instead of just
having it overlap other text by default.
</div>

CSSとHTMLのデモ:

CSS is awesome, especially when you can scroll to see extra text instead of just having it overlap other text by default.

内容の一部がスクロールで表示されると、他の部分が反対側で表示外になることがあります。 その内容のブロックコンテナ要素がスクロールしている要素自身であり、 text-overflowの算出値が2つで、開始端の値が非clip値の場合、 実装はクリップされた内容の代わりに省略記号/文字列を描画しなければなりません。 詳細は前述の値定義と同じですが、ここでは省略記号/文字列はブロックのdirection(directionプロパティに従う)の startendではなく)側に描画します。

スクロール中は、実装によって省略記号/文字列の描画方法(例:ライン端ではなくボックス端に揃える等)を調整しても構いません。

前の例と同様ですが、text-overflow: ellipsis ellipsisを使用した場合のデモです:
CSS is awesome, especially when you can scroll to see extra text instead of just having it overlap other text by default.

開始端と終了端の両方に省略記号/文字列を描画する余裕がない場合は、終了端のみ描画してください。

4.2. ブロック軸オーバーフローの指示:block-ellipsis プロパティ

名前: block-ellipsis
値: none | auto | <string>
初期値: none
適用対象: ブロックコンテナ
継承: する
パーセンテージ: 該当なし
算出値: 指定値
正規順序: 構文規則に従う
アニメーション型: 離散

このプロパティは、(強制/非強制)領域分割の直前の最後のラインボックスに 内容を挿入し、切り詰め/中断された内容の継続性を示すことができます。 直接ブロックコンテナ自身に含まれるラインボックスのみに影響しますが、 継承されるため、上書きしなければ子孫のラインボックスにも効果があります。 ボックスが領域分割直前のラインボックスを含まない場合、このプロパティは効果を持ちません。

注意: 付録A:オーバーフローのリダイレクトで このような領域分割を持つボックスの生成方法が説明されています。

ページやカラム等、他の種類の分割にも適用すべきでしょうか?

挿入された内容はブロックオーバーフロー省略記号と呼びます。 各値の意味は次の通りです:

none
描画に影響しません。
auto
影響を受けるラインボックスの末尾に、エリプシス文字(U+2026)またはより適切な省略記号を ブロックオーバーフロー省略記号として描画します。 UAはコンテンツ言語、 書記体系、書字モードの慣習に従い、 最適な省略記号文字列を選択すべきです。
<string>
指定した文字列を影響を受けるラインボックスの末尾の ブロックオーバーフロー省略記号として描画します。 極端に長い場合はUAが切り詰めてよいです。

block-ellipsisnoneでない場合、 ブロックオーバーフロー省略記号文字列は匿名インラインでラップされ、 ラインボックス末尾にブロックコンテナのルートインラインボックスの直接の子として配置され、 ライン内の他の内容が使えるスペースを減らします。 このインラインにはunicode-bidi: plaintextline-height: 0が割り当てられ、 最後のソフト折り返し機会[CSS-TEXT-3] 参照)後に配置され、 その省略記号が全て行内に収まる限り配置されます。 この目的でoverflow-wrapによる ソフト折り返し機会は無視されます。 その結果、ラインボックス内の内容全てが排除された場合は、 ラインボックスは支柱を含むとみなします(CSS 2.1 § 10.8.1 Leading and half-leading参照)。 テキストの整列とジャスティフィケーションは配置後に行われ、 省略記号も行内容と一緒に測定対象となります。

注意: ブロックオーバーフロー省略記号line-height0にすることで、 それ自体の挿入によって行の高さが増え、 再レイアウトやループが生じるのを防げます。 これはペイント時に省略記号を挿入するのとほぼ同じですが、 整列やジャスティフィケーションには参加します。 欠点は、異常に背が高い/深いグリフの場合、省略記号がオーバーフローする可能性です。

ブロックオーバーフロー省略記号は、 ::first-letter::first-line疑似要素に含めてはいけません。

以後の内容を受け取るフラグメンテーションコンテナフラグメンテーションコンテキスト内に存在する場合、 ブロックオーバーフロー省略記号によって排除された内容は、その フラグメンテーションコンテナにプッシュされなければなりません。

UAはブロックオーバーフロー省略記号を分割不可文字列として扱い、 その一部でもオーバーフローした場合はスクロール可能オーバーフローとして扱い、 text-overflowプロパティの影響を受けます。

ブロックオーバーフロー省略記号はイベントをキャプチャしません: ポインターイベントはその下の要素に送出されます。

また、ボックスの内在サイズには影響しません: min-contentおよびmax-contentサイズは、 block-ellipsisnoneであるかのように算出します。

注意:今後の仕様では、この機能を拡張し、例えば::ellipsis疑似要素による 省略記号のスタイル指定や、ブロック内の子要素をインラインまたはブロックレベルの指示子として選択(この場合はイベントキャプチャ可能)できるようにする可能性があります。

5. オーバーフローの断片化

5.1. 表示行数の制限:line-clamp略記プロパティ

名前: line-clamp
値: none | <integer [1,∞]> <'block-ellipsis'>?
初期値: none
適用対象: 個別プロパティを参照
継承: 個別プロパティを参照
パーセンテージ: 該当なし
算出値: 個別プロパティを参照
アニメーション型: 個別プロパティを参照
正規順序: 構文規則に従う

line-clampプロパティは、 略記であり、max-linesblock-ellipsiscontinueプロパティの略記です。

試験的実装では、略記とロングハンドの完全な挙動に従いながら、 著者には略記のみを公開することを推奨します。 これは、さらなる調整や特にロングハンドプロパティや値の名称変更が可能となるようにするためです。

これにより、ブロックコンテナの内容を指定した行数に制限し、 残り内容を断片化して非表示・非計測とします。 必要に応じて、最後のラインボックスに内容を挿入し、 切り詰め/中断された内容の継続性を示すこともできます。

値の意味は次の通りです:

none
max-linesnonecontinueautoblock-ellipsisnoneに設定します。
<integer [1,∞]> <block-ellipsis>?
max-linesを指定された<integer>に、 continuediscardに、 block-ellipsisプロパティは2番目の値か、省略時はautoに設定します。

この仕組みの動作詳細については、対応するロングハンドプロパティを参照してください。

この例では、各記事のリードパラグラフが5行に収まるよう短縮され、 「… (continued on next page)」で終わるメニューとして一覧表示されます:
li {
  line-clamp: 5 "… (continued on next page)";
}
strong {
  display: block;
  text-transform: uppercase;
}
<li><a href="cheese-is-milk">
  <strong>Cheese is Actually Made of Milk!</strong>
  Investigative reporters at the World Wide Web Press Corps
  have discovered the secret of cheese.
  Tracing through byzantine layers of bureaucracy and shadow corporations,
  our crack team of journalists have traced the source of camembert.
</a></li>

レンダリング例:

+---------------------------------------+
| CHEESE IS ACTUALLY MADE OF MILK!      |
| Investigative reporters at the World  |
| Wide Web Press Corps have discovered  |
| the secret of cheese. Tracing through |
| byzantine…  (continued on next page)  |
+---------------------------------------+

5.1.1. レガシー互換性

レガシーなコンテンツとの互換性のため、 line-clampをサポートするUAは、-webkit-line-clampプロパティと、 -webkit-discardという追加値を continueプロパティに対してもサポートしなければなりません。

名前: -webkit-line-clamp
値: none | <integer [1,∞]>
初期値: none
適用対象: 個別プロパティを参照
継承: 個別プロパティを参照
パーセンテージ: 該当なし
算出値: 個別プロパティを参照
アニメーション型: 個別プロパティを参照
正規順序: 構文規則に従う
名前: continue
新しい値: -webkit-discard

line-clampと同様に、-webkit-line-clampmax-linescontinueblock-ellipsisの略記ですが、以下が異なります:

さらに、display プロパティの算出値が-webkit-boxまたは-webkit-inline-boxとなるボックスの子(匿名子も含む)については、 max-linescontinueblock-ellipsisプロパティの使用値は親ボックスの算出値から取得し、 これらのプロパティの自身への算出値は無視されます。

-webkit-discard値は、discardと同様に動作しますが、 親のdisplayプロパティの算出値が -webkit-boxまたは-webkit-inline-boxであり、 かつ親の-webkit-box-orientプロパティの算出値が verticalの場合のみ有効となります。

注意: レガシーな-webkit-line-clampプロパティの実装は、 ここで規定されているものと完全には一致しません。 歴史的な挙動はクセが強く、堅牢さに欠けており、例えばこのブログ記事に記載されています。 現在の設計は過去の実験の失敗から学び、既存コンテンツとの互換性を十分に保つことで、 実装を最終的に規定通りに変更できるように意図されています。 追加調整が必要と判明した場合は、この仕様に反映されます。 当面の間、著者は挙動に差異がある可能性があることを認識しておくべきです。

5.2. 指定した行数後に強制改行:max-lines プロパティ

名前: max-lines
値: none | <integer [1,∞]>
初期値: none
適用対象: ブロックコンテナかつ領域分割を捕捉するフラグメンテーションコンテナ
継承: しない
パーセンテージ: 該当なし
算出値: キーワードnoneまたは整数
正規順序: 構文規則に従う
アニメーション型: 算出値タイプごと

このプロパティは、領域分割を捕捉するフラグメンテーションコンテナでないボックスには効果がありません。

それ以外の場合、max-linesの値がnoneでない場合、 N番目の子孫インフローラインボックスの後に 領域分割を強制します。 Nmax-linesの指定値です。 同じブロック整形コンテキスト内のラインボックスのみをカウントし、 独立整形コンテキストを確立する子孫の内容はカウント対象外となります。

ラインボックスがNより少ない場合、 max-lines領域分割を導入しません。

continue: discardは要素が 独立整形コンテキストを確立しないため、 入れ子要素のline-clampでの行もカウント対象となり、 下記の例で確認できます。
<div id=a>
  a: line 1<br>
  a: line 2<br>
  <div id=b>
    b: line 1<br>
    b: line 2<br>
    b: line 3<br>
    b: line 4<br>
  </div>
  a: line 3<br>
  a: line 4<br>
</div>

下記のようなCSSの場合 #a { line-clamp: 5; } #b { line-clamp: 2; }:

a: line 1
a: line 2
b: line 1
b: line 2…
a: line 3…

下記のようなCSSの場合 #a { line-clamp: 3; } #b { line-clamp: 2; }:

a: line 1
a: line 2
b: line 1…

2つ目のケースでは、要素#bに設定された最大2行は適用されません。 この要素の2行目の前で強制分割が導入されたためです。

注意: max-linesマルチカラムコンテナには効果がありません。 なぜなら、それらが持つラインボックスはすべて 独立整形コンテキストの中にネストされているからです。

正の整数のみ受け付けます。 0や負の整数は無効であり、 宣言は無視されなければなりません。

注: widowsorphansbreak-insideプロパティは、region breakmax-linesプロパティによって導入される強制的な改段) の位置には影響しません。

注意: 「region break」という名前にも関わらず、これは[CSS-REGIONS-1]への依存ではありません。 「region」という語は強制分割の分類のためだけに使われています: それは「ページ分割」(ページをまたぐ分割 [css-page-3])、 「カラム分割」(マルチカラムレイアウトのカラム間の分割 [css-multicol-1])、 または「region分割」(CSSによるその他の種類のフラグメンテーションコンテナ間の分割)です。

実装が[CSS-REGIONS-1]CSS Overflow 4 § 5 オーバーフローのリダイレクトも サポートしていない場合は、今までその種の分割に直面したことはなく、これは追加となります。 ただし、追加には[CSS-REGIONS-1]の機能性の持ち込みは含みません。 必要なのは:

5.3. オーバーフローの断片化:continueプロパティ

名前: continue
値: auto | discard
初期値: auto
適用対象: ブロックコンテナおよびマルチカラムコンテナ
継承: しない
パーセンテージ: 該当なし
算出値: 指定キーワード
正規順序: 構文規則に従う
アニメーション型: 離散

continueプロパティは、著者がボックスを断片化コンテナ[CSS-BREAK-3]参照)に変換し、 断片化分割以降の内容を破棄するよう指定するためのものです。

このプロパティは region-fragmentプロパティ([CSS-REGIONS-1])の一般化・置換を目的としています。 本仕様で十分に安定したら、regions仕様からregion-fragmentを削除し本プロパティに統合すべきです。

auto

ボックス内に収まらない内容がある場合、 余剰内容は通常のルールに従って処理されます。

discard
ボックスは断片化コンテナとなり、領域分割を捕捉します(もともと断片化コンテナでなければ)。[CSS-BREAK-3] 最初の領域分割以降の内容は描画されません(下記参照)。 (ボックスがマルチカラムコンテナの場合、 オーバーフローカラムも描画されません。)

注意: この領域分割強制(例:max-linesやその他のメカニズム、break-before/break-after等)、 または非強制(例:内容が断片化コンテナのサイズ制約によりオーバーフローする場合)であることがあります。 他の断片化コンテキスト(例:ボックス自体のページ分割等)に適用される分割は、内容を破棄しません。

注意: このプロパティは、 ボックスを独立整形コンテキスト化する効果はありません

例えば、1行が極端に長くオーバーフローし、 ブロック方向に4行分の内容が収まりきらない記事がある場合、 overflowcontinueプロパティの組み合わせによって 異なる描画が可能です(下図参照)。
記事内の1行が極端に長く、さらにブロック方向に4行分収まりきらない例
continue: discard continue: auto
overflow: visible continue:discardかつoverflow:visibleの描画例 continue:autoかつoverflow:visibleの描画例
overflow: hidden continue:discardかつoverflow:hiddenの描画例 continue:autoかつoverflow:hiddenの描画例

continue: discardによって「描画されない」内容は、display: noneに似た扱いとなります:

ただし、内在サイズは断片化コンテナをまたいで算出されるため、 この内容もボックスのmin-contentmax-content インラインサイズCSS Fragmentation 3 § 5.1 可変サイズの断片化ボックスへの分割参照)算出時に考慮されます。min-contentmax-content ブロックサイズは、 断片化フローの開始から最初の強制分割まで、 または強制分割がなければ断片化フローの末尾までの内容を基に算出されます。

注意: 並列断片化フローの場合、 ボックスツリー内で断片化分割以降に現れる内容も、 その位置がこの断片化コンテナの末尾となる位置より上にレイアウトされる場合は 描画されることがあります。

付録A: オーバーフローのリダイレクト

このセクションは非常に実験的です。 continueプロパティの拡張による新しいユースケースへの対応を記録しています。 しかし現時点では合意に至っていません。 議論を促進するためにここに掲載されており、 実験的でない実装は推奨されません。

CSSレベル1 [CSS1]では、指定されたサイズの要素内に収まらない内容を配置することは、 一般的に著者側の誤りとされていました。 こうすると内容が要素の境界外にはみ出し、 他の要素と重なってしまうことが多くなります。

CSSレベル2 [CSS2]では、overflowプロパティが導入され、 スクロールによるオーバーフロー処理が可能となり、もはや著者側の誤りとはされなくなりました。 また、オーバーフローをクリップ処理する指定も可能となり、 著者の意図が内容を表示しない場合に理にかなっています。 この領域はCSS Overflow Module Level 3 [CSS-OVERFLOW-3]で更に洗練されました。

しかし、スクロールは内容を表示する唯一の方法ではなく、 必ずしも最適な方法であるとも限りません。 コデックスが巻物に取って代わったのも、その利点によるものです。

本仕様は、Webページの要素がスクロールではなくページ分割でオーバーフローを処理できる仕組みを導入します。

また本仕様は、オーバーフローの概念をさらに拡張します。 著者が要素内容を流し込む単一領域のみ指定を求めるのではなく、 複数の断片をそれぞれ独自の寸法やスタイルで指定できるようにし、 内容が次々に流れていくことで、オーバーフローせず配置できるようにします。

いずれの場合も、実装はブロック進行方向で内容を分割する必要があります。 この分割方法はCSS Fragmentation Module [CSS-BREAK-3]で規定されています。

オーバーフローのチャンネリング:continueプロパティ

continueプロパティは、著者が要素内に収まりきらない内容を ([CSS-BREAK-3]の意味で)断片化するよう要求でき、 残りの内容をどこに継続させるかの選択肢を提供します。

特に、このプロパティは従来のページ分割を説明し、それをさらに拡張します。

名前: continue
新しい値: overflow | paginate | fragments
初期値: auto
適用対象: ブロックコンテナ [CSS2]、flexコンテナ [CSS3-FLEXBOX]、gridコンテナ [CSS3-GRID-LAYOUT]
継承: しない
パーセンテージ: 該当なし
算出値: 下記参照
アニメーション型: 離散

このプロパティと値の命名は暫定的です。 最初は "fragmentation: auto | none | break | clone | page" として提案されましたが、どちらが良いか広く合意が得られていません。 https://lists.w3.org/Archives/Public/www-style/2015Jan/0357.html

このプロパティは region-fragmentの一般化・置換を目的としています。 本仕様で十分に安定したら、region-fragmentをregions仕様から削除し、このプロパティに統合すべきです。

注意: continue: fragmentsは 以前の仕様の"overflow:fragments"を置き換えたもので、 continue: paginateは "overflow: paged-x | paged-y | paged-x-controls | paged-y-controls"を置き換えています。

auto
autoは、要素がCSS Regionであり、region chain内の最後でない場合のみ算出値として現れます。 収まりきらない内容はチェーンの次のリージョンに送られます。

それ以外の場合、autoは他の値のいずれかに算出されます。

これは§ 5.3 オーバーフローの断片化:continueプロパティでの定義とは異なります。どちらのモデルが適切か?

overflow
収まりきらない内容は、overflowプロパティに従ってオーバーフローします。
paginate
収まりきらない内容はページ分割されます。 これは、'overflow: scroll'がスクロール可能なビューを作るのと同様に、 要素内にページ分割ビューを作成します。

ページ分割オーバーフローを参照

注意: 印刷は、ルートで「continue: paginate」とみなせます。

fragments
収まりきらない内容は要素自身を複製し、レイアウトを継続します。

断片化オーバーフローを参照。

continueプロパティの算出値は以下の通り決定されます:

  1. レイアウト封じ込めを持つ要素または疑似要素の場合、 指定値がautoまたはfragmentsなら 算出値はoverflowとなります。
  2. それ以外で指定値がautoの場合
    1. CSS Regionでregion chain内の最後でなければ 算出値はauto
    2. ページ上なら 算出値はpaginate
    3. fragment boxなら 算出値はfragments
    4. それ以外は算出値はoverflow
  3. それ以外で指定値がfragmentsの場合
    1. ページ上なら 算出値はpaginate
    2. それ以外は指定値がそのまま算出値
  4. その他の場合は指定値がそのまま算出値

multicolのカラムを選択できる疑似要素を導入する場合、 autoがその上ではautoになるように指定する必要があるか、 新しい値を追加してautoがそれに算出されるようにする必要があるかもしれません (ただしそれがカラム以外には何になるか?)。

注意: このプロパティの背景議論は以下スレッドを参照:overflow, overflow-x, overflow-y, overflow-styleの議論fragmentationプロパティ提案

ページ分割オーバーフロー

このセクションは、paginate値と continueプロパティの意味を定義します。

このセクションの執筆が必要

ページは@pageルールでスタイル指定可能にすべき。ネストしたページにどう適用する?

従来のページ分割(例:印刷時)は、autoの算出値で表現すべきか、 それともUAスタイルシートで下記のように指定すべきか:
@media (overflow-block: paged), (overflow-block: optional-paged) {
  :root {
    continue: paginate;
  }
}

従来のページ分割(例:印刷時)は :rootがpage box内に含まれることを前提としており、 page boxが:rootの疑似要素子になるのではない。 fragment box類似で回避できるか? それともpage box内にfragment box(:rootを再現)が入り、そのpage boxが:root内にあるモデル?

page boxモデルが通常のcss boxの子になった場合、どのように動作するか?

[CSS3GCPM]初期案およびOperaの実装は paginateの代わりに4値 "paged-x | paged-y | paged-x-controls | paged-y-controls"を使っていた。 このプロパティにもこれらの値を含めるべきか、 それとも別プロパティで扱うべきか? (例:"pagination-layout: auto | horizontal | vertical", "pagination-controls: auto | none")

1ページだけでなく複数ページ同時表示の能力は? "pagination-layout: horizontal 2;"のような値で可能か?

Brad Kemperによるページ分割と断片化オーバーフローの統合モデル提案あり。複数ページ表示も考慮。 https://www.w3.org/mid/FF1704C5-D5C1-4D6F-A99D-0DD094036685@gmail.com

ページ分割オーバーフローは現在、 overflow/overflow-x/overflow-yプロパティで実装されており、 [CSS3GCPM]ドラフトや [CSS3-MARQUEE]提案で提案されている overflow-styleプロパティや、ここで説明されているcontinueプロパティとは異なる。

断片化オーバーフロー

このセクションは、fragments値とcontinue プロパティの意味を定義します。

要素のcontinue算出値がfragmentsで、 実装がその要素にボックスを生成する場合、 実装はその要素のために一連の断片ボックスを生成しなければなりません。 (continue: fragmentsを持つ要素が 断片ボックスを1つだけ生成する場合もあります。 ただし、要素の算出continuefragmentsでなければ、 そのボックスは断片ボックスではありません。) すべての断片ボックスは断片化コンテナであり、 その断片化コンテナが断片化される原因となるオーバーフローは、 前の断片ボックスの次の兄弟として さらに断片ボックスを生成させます。 それは要素の次の兄弟として生成されるか?他のボックスレベルの修正との正確な関係要検討。 さらに、断片ボックス[css-multicol-1]で定義されるマルチカラムボックスである場合、 ただし定義はmulti-column container overflow columnsになるはずだった内容は 追加の断片ボックスに流し込まれます。 ただし、断片ボックス自体も外部の断片化コンテキスト(ページ・カラム・他の断片ボックス等)による断片化で分割される場合があります。 その場合、同じ断片ボックスの断片が複数生成され、 複数の断片ボックスではなくなります。 (これは断片ボックスがインデックスでスタイル指定される場合に重要です。 ページ分割で断片ボックスを分割しても、インデックスと内容の関係が維持されるようにするためです。) 強制分割が外部断片化コンテキストへ分割した場合、単一断片ボックスの新しい断片か、新しい断片ボックスか? ここで断片ボックス以外の用語にした方が分かりやすい?

要素が他の断片化コンテキスト内で分割された部分をスタイル指定したい場合はどうする? このルールでは::nth-fragment()が使えなくなってしまうが、最も論理的な名前なのに。

<!DOCTYPE HTML><title>内容を
  均等サイズのカードに分割</title>
<style>
  .in-cards {
    continue: fragments;

    width: 13em;
    height: 8em;

    padding: 4px;
    border: medium solid blue;
    margin: 6px;

    font: medium/1.3 Times New
      Roman, Times, serif;
  }
</style>
<div class="in-cards">
  この例では、div内のテキストが
  一連のカードに分割されます。
  これらのカードはすべて同じスタイルです。
  十分な内容があれば、カードが
  オーバーフローし、さらに
  カードが生成されます。2番目の
  カードは最初のカードの
  次の兄弟として生成されます。
</div>
この例では、div内の
テキストが一連のカードに
分割されます。これらのカードは
すべて同じスタイルです。十分な
内容があればカードがオーバーフロー
し、さらにカードが生成されます。
2番目のカードは最初の
カードの次の兄弟として生成
されます。
著者は要素の冒頭行を別の断片で異なるスタイルにしたい場合があります。 しかし、その行が占める高さを正確に予測して最初の断片だけに制限するのは難しいため、 max-linesプロパティを使う方が便利です。 これにより、指定した行数の後で断片が分割されます。 この分割は、要素またはその子孫内の行が同じブロック整形コンテキスト内にある限り、指定行数後に強制されます。
<!DOCTYPE HTML><style>
  .article {
    continue: fragments;
  }
  .article::first-letter {
    font-size: 2em;
    line-height: 0.9;
  }
  .article::nth-fragment(1) {
    font-size: 1.5em;
    max-lines: 3;
  }
  .article::nth-fragment(2) {
    column-count: 2;
  }
</style>
<div class="article">
  ...
</div>
max-linesプロパティにより
記事冒頭数行で大きなフォントが
使えます。max-linesなしだと
著者はheightプロパティを
使わざるをえませんが、
高さ計算を誤ると隙間が
できてしまいます。
(テキスト内容やフォント、
表示環境が不明な場合は
特にその高さ予測が困難です。

continue: fragmentsは 少なくとも一部のテーブル部位、場合によっては他要素にも適用しないことを明記すべき。どれに適用しないか要検討。

この仕様はどの種類の 断片化コンテキストが生成されるかも明記すべきで、 どのbreak-*プロパティ値がこのコンテキスト内で分割を引き起こすか明確にする必要あり。 break-*: regionを適用したい。

この仕様は、断片の内在サイズが断片のための空き領域を変動させるような レイアウト特性を持つ場合の処理モデルを明確にする必要がある。 [CSS3-GRID-LAYOUT]など。 [CSS-REGIONS-1]でもモデル検討済みであり、 そちらの知見、編集者も本仕様に活かすべき。

断片のスタイリング

::nth-fragment() 疑似要素

::nth-fragment() 疑似要素は、 要素によって生成された断片ボックスの一部を表す疑似要素です。 疑似要素の引数は、[SELECT]で定義されている :nth-child() 疑似クラスの引数と同じ構文を取り、意味も同じですが、数値は要素の兄弟ではなく、 その要素によって生成された断片ボックスに対して相対的に数える点が異なります。

断片を末尾から数えて指定するセレクタは意図的に提供されていません。 そういったセレクタは断片数の決定を妨げます。

今後の議論によっては ::nth-fragment(an+b) 構文が 新しい ::fragment:nth(an+b) 構文に置換される可能性があります。

断片のスタイル指定

これはcontinue:fragmentsのみに適用すべきか、 continue:paginateにも適用すべきか? (もし適用する場合、continue:paginateにはより厳格なプロパティ制限が必要になる。)

::nth-fragment() 疑似要素を含むルールがない場合、 各断片ボックスの算出スタイルは、 その断片ボックスが作られた要素の算出スタイルとなります。 ただし、断片ボックスのスタイルは、 セレクタの主題[SELECT])に::nth-fragment()疑似要素が含まれるルールによっても影響を受けます。 1から始まる断片ボックスの番号が その::nth-fragment()疑似要素と一致し、 セレクタ(::nth-fragment()疑似要素除く部分)が断片を生成する要素にマッチした場合に適用されます。

断片ボックスのスタイル決定時、 断片疑似要素にマッチするルールは、要素にマッチするルールとともにカスケードし、 断片疑似要素は疑似クラスと同じだけの詳細度を加えます。この詳細度計算はカスケードモジュールにも記載する必要があるか?

<!DOCTYPE HTML><style>
  .bouncy-columns {
    continue: fragments;
    width: 6em;
    height: 10em;
    float: left;
    margin: 1em;
    font: medium/1.25 Times New
      Roman, Times, serif;
  }
  .bouncy-columns::nth-fragment(1) {
    background: aqua; color: black;
    transform: rotate(-3deg);
  }
  .bouncy-columns::nth-fragment(2) {
    background: yellow; color: black;
    transform: rotate(3deg);
  }
</style>
<div class="bouncy-columns">
  ...
</div>
この
例では、div内の
テキストが
一連の
カラムに分割
されています。著者は
テキストが2カラム
に収まることを
意図したのでしょう。
しかし3カラムになる場合も
3つ目のカラムが生成されます。
ただし3つ目の
断片には断片固有の
スタイルがありません。
著者がそのための
スタイルを指定していない
ためです。

::nth-fragment()疑似要素に対して continueプロパティでスタイル指定すると効果があります。 断片ボックスの算出continue値がfragments以外の場合、その断片ボックスは最後の断片となります。 ただし、最初の断片にcontinueを上書きしても、 断片ボックスが存在しなくなることはありません。 断片ボックスが生成されるかどうかは、要素のoverflow算出値で決まります。

::nth-fragment()疑似要素に対して contentプロパティで指定しても、 効果はありません。 断片ボックスの算出content値は 要素のcontent算出値と同じままです。

display: noneを断片ボックスに指定すると、そのインデックスの断片ボックスは生成されません。 ただし、後続の断片ボックス用の::nth-fragment()疑似要素のマッチ用インデックスとしては 生成されたものとしてカウントされます。 ただし、生成されないため内容は持ちません。

displaypositionfloatなど他の値は指定可能ですが、 内側のdisplay型は変更できません。 (continueはブロックコンテナ・flexコンテナ・gridコンテナにのみ適用されます。)詳細な動作仕様が必要

他の疑似要素と同様、疑似要素は対応する要素の中に存在するため、 ::nth-fragment()疑似要素への宣言は 疑似要素無しルールの宣言より優先されます。 優先度は通常のカスケード順で決定されます([CSS2]参照)。

::nth-fragment()疑似要素上のスタイルは、 断片ボックス内の内容への継承に影響します。 つまり、断片ボックス内の内容は 断片ボックス(疑似要素)のスタイルから継承し、要素から直接継承しません。 これにより、1つの要素が複数断片ボックスに分割された場合、部位ごとに異なるスタイルとなることがあります。

この継承ルールにより、 直接指定できないスタイル(inheritや、::first-letterに適用されないプロパティのデフォルト継承等)を 間接的に指定できてしまう問題があります。 次セクションのルールに基づき、断片内部スタイリングへの制限は継承にも適用すべきです。

<!DOCTYPE HTML><style>
  .article {
    continue: fragments;
  }
  .article::nth-fragment(1) {
    font-size: 1.5em;
    margin-bottom: 1em;
    height: 4em;
  }
  .article::nth-fragment(2) {
    margin-left: 5em;
    margin-right: 2em;
  }
</style>
<div class="article">
  The <code>font-size</code> property...
</div>
font-sizeプロパティは
断片上で指定すると
断片内の子孫に継承されます。
この例のように
継承プロパティは
断片上で確実に使えます。

断片内部のスタイリング

これはcontinue:fragmentsのみに適用すべきか、 continue:paginateにも適用すべきか?

::nth-fragment()疑似要素は 断片ボックス内部の内容にも スタイル指定に利用できます。 ::first-line::first-letter疑似要素と異なり、 ::nth-fragment()疑似要素は セレクタの主題以外の部分にも適用できます。 ただし、そういったセレクタで適用できるCSSプロパティは ::first-letter疑似要素に適用できるものに限られます。

より厳密には、 セレクタの主題以外の部分に ::nth-fragment()疑似要素が付いている場合、 そのルールの宣言は、断片(またはその疑似要素)に対して以下を満たすとき適用されます:

  1. 宣言が::first-letter疑似要素に適用できるプロパティであること
  2. 疑似要素無しでそのルールが その断片(またはその疑似要素)に適用されること
  3. 各除去した::nth-fragment()疑似要素について、 断片がその疑似要素が付いていたセレクタにマッチした要素の 断片ボックス内に存在し、 そのインデックスが疑似要素の番号と一致すること
<!DOCTYPE HTML><style>
  .dark-columns {
    continue: fragments;
    width: 6em;
    height: 10em;
    float: left;
    margin-right: 1em;
    font: medium/1.25 Times New
      Roman, Times, serif;
  }
  .dark-columns::nth-fragment(1) {
    background: aqua; color: black;
  }
  .dark-columns::nth-fragment(1) :link {
    color: blue;
  }
  .dark-columns::nth-fragment(1) :visited {
    color: purple;
  }
  .dark-columns::nth-fragment(2) {
    background: navy; color: white;
  }
  .dark-columns::nth-fragment(2) :link {
    color: aqua;
  }
  .dark-columns::nth-fragment(2) :visited {
    color: fuchsia;
  }
</style>
<div class="dark-columns">
  ...
</div>
この
では、
テキストが
明るい色の
断片から
暗い色の断片
へと流れます。
そのため断片
ごとにハイパーリンク
など異なるスタイルを
指定したいことがあります。

付録B: scrollbar-gutterの拡張の可能性

このセクションは規範的ではありません。

このセクションでは、追加のユースケースを解決するためにscrollbar-gutterプロパティの拡張を試みている現在の取り組みについて記述しています。 しかし、現時点ではコンセンサスは得られていません。 議論を促すために提示されていますが、実験的でない実装は推奨されません。

この例ではscrollbar-gutterプロパティの追加値のすべてを試用しています:
クラシックスクロールバーの場合
オーバーレイスクロールバーの場合
名前: scrollbar-gutter
新しい値: auto | [ [ stable | always ] && both-edges? && force? ] || match-parent
適用対象: すべての要素

オーバーレイスクロールバーの場合、 scrollbar gutterの正確な幅はUAによって定義されます。 ただし、0であってはならず、 ページやスクロールバーに対するユーザー操作によって変化してはならず、 スクロールバー自体が変化した場合でも、 オーバーレイスクロールバーの最も広い形の幅をカバーすることが期待されます。 ただし、これは明確に定義されている範囲内でです。

このプロパティの新しい値の意味は以下の通りです:

always
scrollbar gutterは、overflowscrollhidden、またはautoの場合に常に表示されます。 スクロールバーのタイプやボックスがオーバーフローしているかどうかに関係なく適用されます。
scrollbar-gutter: alwaysは、 要素の端に小さなインタラクティブな要素があり、 オーバーレイスクロールバーが表示されてそれらを覆ってしまう問題を解決できます。 代表的な例は基本的なToDoリストで、 各行がテキストで始まり、右端にチェックボックスが配置されている場合です。 クラシックスクロールバーでは問題ありませんが、 オーバーレイスクロールバーの場合、チェックボックスが隠れて操作しづらくなります。
クラシックスクロールバーの隣にあるチェックボックス

					A scrollable todo list with checkboxes on the right edge,
					adjecent to the scrollbar.
					This situation poses no particular problem.
チェックボックスとオーバーレイスクロールバー

					A scrollable todo list with checkboxes on the right edge.
					When the overlay scrollbar is hidden,
					the situation poses no particular problem,
					but when it pops in,
					it covers the checkboxes,
					getting in the way of interacting with them.

オーバーレイスクロールバーは通常、一時的に表示され、操作しないと消えるため、 隠れているチェックボックスも完全に使えなくなるわけではありません。 しかし、スクロールバーが表示されている時は操作性が悪化します。 作者は右側のパディングを追加して回避しようとするかもしれませんが、 (1)どれだけ追加すれば良いか? (2)クラシックスクロールバーの場合はそのパディングが不要です。scrollbar-gutter: alwaysはこの問題を解決し、 クラシックスクロールバーの場合は同じ結果となり、 オーバーレイスクロールバーの場合に望ましいガターを追加します:

チェックボックスとオーバーレイスクロールバー+scrollbar-gutter: always

					A scrollable todo list with checkboxes on the right edge,
					shifted left by a gutter.
					Whether the overlay scrollbar is hidden or visible,
					the checkboxes remain uncovered,
					and can be interacted with.
Appleはこの値の追加に消極的であり、 作者が広範囲に使用しすぎて、オーバーレイスクロールバーが不要な場合でもガターを挿入し、 オーバーレイスクロールバーの省スペースの利点を損なう可能性があるとしています。

別の解決方法として、 インタラクティブ要素を対象としたプロパティを作成し、 スクロールバーの下に要素が来ないようにすることが提案されています。 有効にすると、要素の右または左のマージンが適切な値まで拡大され、 オーバーレイスクロールバーの下に入らないようにし、 それ以外の場合は変更しません。

追加のトグルで、要素のinline-endとinline-start両方のマージンを拡大するか、 どちらも拡大しないかを選択できるようにすることも可能です。 これは、スクローラーのブロックレベルの子要素で、 境界線や背景がある場合に有用です。 一方側だけスペースを追加すると、スクロールバーが消えたときに見た目が中心からずれてしまうため、 両側にスペースを追加することで解決できます。

さらに、要素自体を保護するためにマージンを拡大するか、 要素の内容を保護するためにパディングを拡大するかを選択できる可能性もあります。

構文例: scrollbar-avoid: none | [self | content] && both-edges?

この仕組みにより、scrollbar-gutter: match-parentの必要性が緩和されるかもしれません。 親にscrollbar-gutter: stablescrollbar-gutter: alwaysを設定し、 子にscrollbar-gutter: match-parent を設定していた状況は、 親をscrollbar-gutter: autoにし、 子にscrollbar-avoid: selfscrollbar-avoid: contentを使うことで対応できるかもしれません。

force
forceキーワードが指定されている場合、stablealwaysoverflowvisiblehidden、またはclipの場合にも autoscrollと同様に有効になります。 これはスクロールバー自体を表示するものではなく、scrollbar gutterを表示するものです。
この値により、作者はスクローラーに隣接する要素の端にも、 スクロール領域と同じスペースを確保し、コンテンツを揃えることができます。 クラシックスクロールバーのためにパディングを追加し、オーバーレイスクロールバーでは追加しないことで同じ効果も得られますが、 作者がパディングを追加すべきかや、その量を知る手段がありません。

具体例として(執筆時点)、GmailのUIに見られます: OSレベルでクラシックスクロールバーが有効な場合は、Gmailはツールバーに正しいパディングを追加し、 メールリスト内のアイコンと揃えています。一方で、オーバーレイスクロールバーの場合はパディングが誤って追加され、 (オレンジの点線は議論の箇所を強調するために手動で追加)揃いません。

クラシックスクロールバーのGmail UI

				Icons in and out of the scroller are properly aligned:
				those in the scroller are shifted left from the right edge of their container due to the scrollbar
				while those outside of it are shifted left by the same amount through padding.
オーバーレイスクロールバーのGmail UI

				Icons in and out of the scroller are not aligned:
				those in the scroller are flush to the right edge of the container
				while those outside of it are shifted left due to unnecessary padding.

ツールバーのスペース調整を scrollbar-gutter: stable forceで行えば、 両方のケースやスクロールバーのサイズが異なるシステムでもアイコンの位置が揃います。

この値があるため、 プロパティは単なるスクロールコンテナだけでなく、 すべての要素に適用されるようになりました。 これにより、overflow: visibleな要素にも適用できます(例参照)。 ただし、これは実装上の困難を招く可能性があり、 UAは既存コードに頼ってガターの配置ができず、従来ガターを持てなかった要素にも対応しなければなりません。 overflowが適用できるすべての要素に制限すれば、 ユースケースには影響なく、実装も容易になるかもしれません。 それでも、スクロールコンテナに限定するよりは難易度が高い可能性があります。

上記の実装課題以外にも、 この値が意図通りに問題を確実に解決するかは不明です。 スクロールバーやガターのサイズ・位置はUAの定義によって異なり、 要素ごとに変化する可能性があります。 スクロールバーの外観や位置はUAが決定するため、 それに影響するプロパティのリストには制限がありません。 direction(HTMLのdir属性経由)や scrollbar-widthなどを設定すれば、 UAが要素にスクロールバーを作成した場合の位置やサイズを把握でき、 適切なガターを配置できるかもしれませんが、保証はできません。

仕様の初期段階では、 この値が例示した効果を達成する唯一の手段でした。 しかし、その後scrollbar-gutter: stableoverflow: hidden要素にも適用できるようになりました。 overflow: hiddenには他に望ましくない効果もありますが、 scrollbar-gutter: stableoverflow: hiddenの組み合わせでも scrollbar-gutter: stable forceと同じようにスペースを追加でき、 上述の他の課題も考慮すると、十分な回避策となる可能性があります。

match-parent
親にscrollbar gutter(または両端にガター)があるブロックレベルボックスでは、 この値を指定すると、親のガターと同じ側・同じ幅のガターを持つようになります。 さらに、 ガターは親ボックスのガターと重なるようになります。
The gutter of a <fake-maybe-placeholder bs-autolink-syntax='''scrollbar-gutter: match-parent'''>scrollbar-gutter: match-parent</fake-maybe-placeholder> box overlaps with that of its parent.

scrollbar-gutter: match-parentが指定されたボックスに ガター側に非ゼロのボーダーやマージンがある場合、 そのボックスのガターサイズはparent.gutter - child.border - child.marginとなり、 ガター+ボーダー+マージンが親のガターと重なります。

scrollbar-gutter/ match-parent が指定されたボックスが スクロールコンテナの場合は、 スクロールバーのタイプやoverflowプロパティ、 scrollbar-gutterプロパティの他の値によって、 独自のスクロールバー用の追加ガターが必要になる場合があります。 これは親のガターとは重ならず、追加で確保されます。

子の背景が親のガターに食い込む例(match-parentによる)
クラシックスクロールバー付きスクロールコンテナ内のmatch-parentボックス(overflow: autoscrollbar-gutter: stable
The background of the match-parent element is visible in the gutter when the scrollbar isn’t there.
スクロールコンテナ内のmatch-parent入りスクロール可能ボックス
The element has a double gutter, one for its own scrollbar, one to match its parent’s.
スクロールコンテナ内のmatch-parent入りスクロール可能ボックス(双方向テキスト)
The element has a two gutters, one for its own scrollbar, one to match its parent’s, on opposite sides.
スクロールコンテナ内のscrollbar-gutter:match-parent stable入りスクロール可能ボックス(双方向テキスト)
The element has a two gutters, one for its own scrollbar (not shown, as it’s not overflowing), one to match its parent’s, on opposite sides.
注記: 以下の表は、さまざまなスクロールバータイプにおけるoverflowscrollbar-gutterの相互作用をまとめたものであり、 どの場合にscrollbar gutterのためにスペースが確保されるかを示しています。
scrollbar gutterのためにスペースを確保すべきか?
overflow scrollbar-gutter クラシックスクロールバー オーバーレイスクロールバー (オーバーフローの有無を問わず)
オーバーフローあり オーバーフローなし
scroll auto はい はい
stable はい はい
always はい はい はい
auto auto はい
stable はい はい
always はい はい はい
hidden auto
stable はい はい
always はい はい はい
visible, clip auto
stable もし force の場合 もし force の場合
always もし force の場合 もし force の場合 もし force の場合

付録C: プライバシーに関する考慮事項

この仕様は新しいプライバシーに関する考慮事項を導入しません。

付録D: セキュリティに関する考慮事項

この仕様は新しいセキュリティに関する考慮事項を導入しません。

変更点

最近の変更点

2017年6月の作業草案以降の主な変更点:

レベル3以降の変更点

未定

謝辞

特に以下の方々のフィードバックに感謝します。 Rossen Atanassov、 Bert Bos、 Tantek Çelik、 John Daggett、 fantasai、 Daniel Glazman、 Vincent Hardy、 Håkon Wium Lie、 Peter Linss、 Robert O’Callahan、 Florian Rivoal、 Alan Stearns、 Steve Zilles、 そして www-style コミュニティの皆様。

適合性

文書の規約

適合性要件は、記述的な断言とRFC 2119の用語の組み合わせで表現されます。重要なキーワード「MUST」「MUST NOT」「REQUIRED」「SHALL」「SHALL NOT」「SHOULD」「SHOULD NOT」「RECOMMENDED」「MAY」「OPTIONAL」は、規範的な部分でRFC 2119に従い解釈されます。 ただし、読みやすさのため、本仕様ではこれらの単語はすべて大文字で記載されていません。

本仕様の本文は、明示的に非規範的と記載されたセクション、例、および注記を除き、すべて規範的です。 [RFC2119]

本仕様の例は「例えば」という言葉で始まるか、class="example"のように規範的な本文から区別されます。例えば以下のようになります:

これは情報提供のための例です。

情報的な注記は「注記」という語で始まり、class="note"で規範的な本文から区別されます。例えば以下のようになります:

注記:これは情報的な注記です。

アドバイス事項は、特別な注意を促すために規範的なセクションとして強調表示され、<strong class="advisement">で他の規範的本文から区別されます。例えば以下のようになります: UAはアクセシブルな代替手段を必ず提供しなければなりません。

適合クラス

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

スタイルシート
CSSスタイルシート
レンダラー
UAがスタイルシートの意味を解釈し、それを使用する文書をレンダリングすること。
オーサリングツール
UAがスタイルシートを作成すること。

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

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

オーサリングツールが本仕様に適合するためには、スタイルシートを本モジュールの汎用CSS文法および各機能の個別文法に従い構文的に正しく記述し、スタイルシートのその他すべての適合要件を満たす必要があります。

部分的な実装

著者がフォールバック値を割り当てるために前方互換の構文解析ルールを利用できるよう、CSSレンダラーは、利用可能なレベルのサポートがないat規則、プロパティ、プロパティ値、キーワード、その他の構文要素を必ず無効として扱い、適切に無視しなければなりません。特に、ユーザーエージェントは、サポートされていない構成値のみを選択的に無視し、サポートされている値のみを単一の複数値プロパティ宣言で適用してはなりません。いずれかの値が無効(サポートされていない値は必ずそうなる)と判断された場合、CSSでは宣言全体が無視される必要があります。

不安定および独自拡張の実装について

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

実験的でない実装

仕様がCandidate Recommendation段階に達したら、実験的でない実装が可能となり、実装者は仕様に従って正しく実装できると証明できるCRレベルの機能について、非プレフィックス版をリリースする必要があります。

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

テストケースおよび実装報告書の提出に関する詳細は、CSSワーキンググループのWebサイトhttps://www.w3.org/Style/CSS/Test/で確認できます。 質問はpublic-css-testsuite@w3.orgメーリングリスト宛にお願いします。

索引

本仕様で定義されている用語

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

参考文献

規範的な参考文献

[COMPAT]
Mike Taylor. Compatibility Standard. Living Standard. URL: https://compat.spec.whatwg.org/
[CSS-BACKGROUNDS-3]
Bert Bos; Elika Etemad; Brad Kemper. CSS Backgrounds and Borders Module Level 3. 2023年2月14日. CR. URL: https://www.w3.org/TR/css-backgrounds-3/
[CSS-BOX-4]
Elika Etemad. CSS Box Model Module Level 4. 2022年11月3日. WD. URL: https://www.w3.org/TR/css-box-4/
[CSS-BREAK-3]
Rossen Atanassov; Elika Etemad. CSS Fragmentation Module Level 3. 2018年12月4日. CR. URL: https://www.w3.org/TR/css-break-3/
[CSS-BREAK-4]
Rossen Atanassov; Elika Etemad. CSS Fragmentation Module Level 4. 2018年12月18日. WD. URL: https://www.w3.org/TR/css-break-4/
[CSS-CASCADE-5]
Elika Etemad; Miriam Suzanne; Tab Atkins Jr.. CSS Cascading and Inheritance Level 5. 2022年1月13日. CR. URL: https://www.w3.org/TR/css-cascade-5/
[CSS-CONTAIN-1]
Tab Atkins Jr.; Florian Rivoal. CSS Containment Module Level 1. 2022年10月25日. REC. URL: https://www.w3.org/TR/css-contain-1/
[CSS-CONTAIN-2]
Tab Atkins Jr.; Florian Rivoal; Vladimir Levin. CSS Containment Module Level 2. 2022年9月17日. WD. URL: https://www.w3.org/TR/css-contain-2/
[CSS-CONTENT-3]
Elika Etemad; Dave Cramer. CSS Generated Content Module Level 3. 2019年8月2日. WD. URL: https://www.w3.org/TR/css-content-3/
[CSS-DISPLAY-3]
Tab Atkins Jr.; Elika Etemad. CSS Display Module Level 3. 2023年3月16日. CR. URL: https://www.w3.org/TR/css-display-3/
[CSS-INLINE-3]
Dave Cramer; Elika Etemad. CSS Inline Layout Module Level 3. 2022年11月14日. WD. URL: https://www.w3.org/TR/css-inline-3/
[CSS-MASKING-1]
Dirk Schulze; Brian Birtles; Tab Atkins Jr.. CSS Masking Module Level 1. 2021年8月5日. CR. URL: https://www.w3.org/TR/css-masking-1/
[CSS-MULTICOL-1]
Florian Rivoal; Rachel Andrew. CSS Multi-column Layout Module Level 1. 2021年10月12日. CR. URL: https://www.w3.org/TR/css-multicol-1/
[CSS-OVERFLOW-3]
Elika Etemad; Florian Rivoal. CSS Overflow Module Level 3. 2022年12月31日. WD. URL: https://www.w3.org/TR/css-overflow-3/
[CSS-POSITION-3]
Elika Etemad; Tab Atkins Jr.. CSS Positioned Layout Module Level 3. 2023年2月17日. WD. URL: https://www.w3.org/TR/css-position-3/
[CSS-PSEUDO-4]
Daniel Glazman; Elika Etemad; Alan Stearns. CSS Pseudo-Elements Module Level 4. 2022年12月30日. WD. URL: https://www.w3.org/TR/css-pseudo-4/
[CSS-REGIONS-1]
Rossen Atanassov; Alan Stearns. CSS Regions Module Level 1. 2014年10月9日. WD. URL: https://www.w3.org/TR/css-regions-1/
[CSS-SIZING-3]
Tab Atkins Jr.; Elika Etemad. CSS Box Sizing Module Level 3. 2021年12月17日. WD. URL: https://www.w3.org/TR/css-sizing-3/
[CSS-SYNTAX-3]
Tab Atkins Jr.; Simon Sapin. CSS Syntax Module Level 3. 2021年12月24日. CR. URL: https://www.w3.org/TR/css-syntax-3/
[CSS-TEXT-3]
Elika Etemad; Koji Ishii; Florian Rivoal. CSS Text Module Level 3. 2023年2月13日. CR. URL: https://www.w3.org/TR/css-text-3/
[CSS-TEXT-4]
Elika Etemad; et al. CSS Text Module Level 4. 2023年3月1日. WD. URL: https://www.w3.org/TR/css-text-4/
[CSS-VALUES-3]
Tab Atkins Jr.; Elika Etemad. CSS Values and Units Module Level 3. 2022年12月1日. CR. URL: https://www.w3.org/TR/css-values-3/
[CSS-VALUES-4]
Tab Atkins Jr.; Elika Etemad. CSS Values and Units Module Level 4. 2022年10月19日. WD. URL: https://www.w3.org/TR/css-values-4/
[CSS-WRITING-MODES-3]
Elika Etemad; Koji Ishii. CSS Writing Modes Level 3. 2019年12月10日. REC. URL: https://www.w3.org/TR/css-writing-modes-3/
[CSS-WRITING-MODES-4]
Elika Etemad; Koji Ishii. CSS Writing Modes Level 4. 2019年7月30日. CR. URL: https://www.w3.org/TR/css-writing-modes-4/
[CSS2]
Bert Bos; et al. Cascading Style Sheets Level 2 Revision 1 (CSS 2.1) Specification. 2011年6月7日. REC. URL: https://www.w3.org/TR/CSS21/
[CSS22]
Bert Bos. Cascading Style Sheets Level 2 Revision 2 (CSS 2.2) Specification. 2016年4月12日. WD. URL: https://www.w3.org/TR/CSS22/
[CSS3-FLEXBOX]
Tab Atkins Jr.; et al. CSS Flexible Box Layout Module Level 1. 2018年11月19日. CR. URL: https://www.w3.org/TR/css-flexbox-1/
[CSS3-GRID-LAYOUT]
Tab Atkins Jr.; et al. CSS Grid Layout Module Level 1. 2020年12月18日. CR. URL: https://www.w3.org/TR/css-grid-1/
[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
[SELECT]
Tantek Çelik; et al. Selectors Level 3. 2018年11月6日. REC. URL: https://www.w3.org/TR/selectors-3/
[UAX29]
Christopher Chapman. Unicode Text Segmentation. 2022年8月26日. Unicode Standard Annex #29. URL: https://www.unicode.org/reports/tr29/tr29-41.html

参考情報

[CSS-OVERFLOW-4]
David Baron; Florian Rivoal. CSS Overflow Module Level 4. 2022年12月31日. WD. URL: https://www.w3.org/TR/css-overflow-4/
[CSS-PAGE-3]
Elika Etemad; Simon Sapin. CSS Paged Media Module Level 3. 2018年10月18日. WD. URL: https://www.w3.org/TR/css-page-3/
[CSS-SCROLLBARS-1]
Tantek Çelik; Rossen Atanassov; Florian Rivoal. CSS Scrollbars Styling Module Level 1. 2021年12月9日. CR. URL: https://www.w3.org/TR/css-scrollbars-1/
[CSS-UI-4]
Florian Rivoal. CSS Basic User Interface Module Level 4. 2021年3月16日. WD. URL: https://www.w3.org/TR/css-ui-4/
[CSS1]
Håkon Wium Lie; Bert Bos. Cascading Style Sheets, level 1. 2018年9月13日. REC. URL: https://www.w3.org/TR/CSS1/
[CSS3-MARQUEE]
Bert Bos. CSS Marquee Module Level 3. 2014年10月14日. NOTE. URL: https://www.w3.org/TR/css3-marquee/
[CSS3GCPM]
Dave Cramer. CSS Generated Content for Paged Media Module. 2014年5月13日. WD. URL: https://www.w3.org/TR/css-gcpm-3/
[HTML]
Anne van Kesteren; et al. HTML Standard. Living Standard. URL: https://html.spec.whatwg.org/multipage/

プロパティ索引

名前 初期値 適用対象 継承 %値 アニメーションタイプ 正規順序 計算値 論理プロパティグループ
-webkit-line-clamp none | <integer [1,∞]> none 個別プロパティを参照 個別プロパティを参照 N/A 個別プロパティを参照 構文規則による 個別プロパティを参照
block-ellipsis none | auto | <string> none ブロックコンテナ はい N/A 離散型 構文規則による 指定値
continue auto | discard auto ブロックコンテナおよびマルチカラムコンテナ いいえ N/A 離散型 構文規則による 指定キーワード
line-clamp none | <integer [1,∞]> <'block-ellipsis'>? none 個別プロパティを参照 個別プロパティを参照 N/A 個別プロパティを参照 構文規則による 個別プロパティを参照
max-lines none | <integer [1,∞]> none 領域ブレークを捕捉するフラグメント化コンテナでもあるブロックコンテナ いいえ N/A 計算値タイプによる 構文規則による キーワードnoneまたは整数
overflow-clip-margin <visual-box> || <length [0,∞]> 0px overflowが適用されるボックス いいえ 個別プロパティを参照 個別プロパティを参照 構文規則による 個別プロパティを参照
overflow-clip-margin-block <visual-box> || <length [0,∞]> 0px overflowが適用されるボックス いいえ 個別プロパティを参照 個別プロパティを参照 構文規則による 個別プロパティを参照
overflow-clip-margin-block-end <visual-box> || <length [0,∞]> 0px overflowが適用されるボックス いいえ 個別プロパティを参照 <visual-box>の値が一致する場合は計算値による、それ以外は離散型 構文規則による 計算された<length>および<visual-box>キーワード overflow-clip-margin
overflow-clip-margin-block-start <visual-box> || <length [0,∞]> 0px overflowが適用されるボックス いいえ 個別プロパティを参照 <visual-box>の値が一致する場合は計算値による、それ以外は離散型 構文規則による 計算された<length>および<visual-box>キーワード overflow-clip-margin
overflow-clip-margin-bottom <visual-box> || <length [0,∞]> 0px overflowが適用されるボックス いいえ 個別プロパティを参照 <visual-box>の値が一致する場合は計算値による、それ以外は離散型 構文規則による 計算された<length>および<visual-box>キーワード overflow-clip-margin
overflow-clip-margin-inline <visual-box> || <length [0,∞]> 0px overflowが適用されるボックス いいえ 個別プロパティを参照 個別プロパティを参照 構文規則による 個別プロパティを参照
overflow-clip-margin-inline-end <visual-box> || <length [0,∞]> 0px overflowが適用されるボックス いいえ 個別プロパティを参照 <visual-box>の値が一致する場合は計算値による、それ以外は離散型 構文規則による 計算された<length>および<visual-box>キーワード overflow-clip-margin
overflow-clip-margin-inline-start <visual-box> || <length [0,∞]> 0px overflowが適用されるボックス いいえ 個別プロパティを参照 <visual-box>の値が一致する場合は計算値による、それ以外は離散型 構文規則による 計算された<length>および<visual-box>キーワード overflow-clip-margin
overflow-clip-margin-left <visual-box> || <length [0,∞]> 0px overflowが適用されるボックス いいえ 個別プロパティを参照 <visual-box>の値が一致する場合は計算値による、それ以外は離散型 構文規則による 計算された<length>および<visual-box>キーワード overflow-clip-margin
overflow-clip-margin-right <visual-box> || <length [0,∞]> 0px overflowが適用されるボックス いいえ 個別プロパティを参照 <visual-box>の値が一致する場合は計算値による、それ以外は離散型 構文規則による 計算された<length>および<visual-box>キーワード overflow-clip-margin
overflow-clip-margin-top <visual-box> || <length [0,∞]> 0px overflowが適用されるボックス いいえ 個別プロパティを参照 <visual-box>の値が一致する場合は計算値による、それ以外は離散型 構文規則による 計算された<length>および<visual-box>キーワード overflow-clip-margin
text-overflow [ clip | ellipsis | <string> | fade | <fade()> ]{1,2} clip ブロックコンテナ いいえ 行ボックスの幅を参照 計算値タイプによる 構文規則による 指定値(長さは絶対値に変換)

課題一覧

最終版の際に Level 3の内容 をコピーする。
最終版の際に Level 3の内容 をコピーする。
overflow置換要素 への適用はまだ検討中。[Issue #7144]
overflow-clip-margin置換要素 への適用はまだ検討中。[Issue #7144]
このセクションは [CSS-OVERFLOW-3] と再同期が必要かもしれません。
フェードアウトの計算方法を定義して、フェードの挙動がブラウザ間で同一になるようにする必要があるか? 例えば mask-image: linear-gradient(to right, rgba(0,0,0,1), rgba(0,0,0,0)) のような形が望ましいが、対象部分のみに適用する必要がある。
行ボックスがフェード効果の希望長さに対して短すぎる場合、効果を削除するべきか、適用距離を縮めるべきか、あるいはフェードの末端をクリップするべきか?
行ボックスからはみ出した部分や重なった部分をどう扱うべきか? フェードは論理的な内容、物理的な行ボックス、あるいは両者の交差部分に適用するべきか?
RTL例の図を挿入して注記を説明する。
この仕様は他の種類のフラグメントブレーク(例:ページ、カラム)にも適用すべきか?
当面は、実験的実装はこのショートハンドとロングハンドの全挙動に従うことが推奨されるが、著者にはショートハンドのみを公開すること。 これは今後の調整やロングハンドプロパティ・値の名称変更を容易にするため。
このプロパティは region-fragment プロパティ([CSS-REGIONS-1] より)を一般化・置換することを意図している。 この仕様内で十分に安定すれば、region-fragment を領域仕様から削除し、こちらを採用する。
OMへの影響が明確に定義されていることを確認する。[Issue #2970]
positioned 要素の静的位置が破棄されたコンテンツ内にある場合はレンダリングされない? Sydney F2F meeting の議論も参照。[Issue #2971]
このセクションは非常に実験的です。 continue プロパティの拡張を検討した現状を記載しています。 しかし、まだ合意には至っていません。 議論のために提示されているものであり、非実験的な実装は推奨されません。
このプロパティおよび値の名称は暫定的です。 当初は "fragmentation: auto | none | break | clone | page" と提案されました(https://lists.w3.org/Archives/Public/www-style/2015Jan/0357.html 参照)。 どちらの命名がよいか合意はまだありません。
このプロパティは region-fragment を一般化・置換することを意図している。 この仕様内で十分に安定すれば、region-fragment を領域仕様から削除し、こちらを採用する。
これは § 5.3 Overflowのフラグメント化: continueプロパティ の定義とは異なり、 指定値が計算値となっている。 どちらのモデルが良いか?
マルチカラム内のカラムを選択できる疑似要素を導入する場合、autoはそれらの要素上でautoに計算されるべきか、 あるいは新しい値を導入してautoがそれに計算されるべきか? (ただし、カラム以外ではその値はどう計算されるべきか?)
このセクションを書くこと。
@page規則でページをスタイル指定できるようにすべき。ネストされたページの場合はどうなる?
従来のページ分割(例:印刷時)は auto の計算値のマジックで表現すべきか、 それともUAスタイルシートに以下を挿入して表現すべきか:
@media (overflow-block: paged), (overflow-block: optional-paged) {
  :root {
    continue: paginate;
  }
}
従来のページ分割(例:印刷時)は :rootがページボックスに含まれていることを前提としているが、 ページボックスが:rootの疑似要素子になる場合はどうすべきか? fragment boxのような仕組みで回避できるか? あるいは:rootの中にページボックス、その中にfragment box(:rootの複製)が入る構造で回避できるか?
ページボックスモデルが通常のCSSボックスの子になった場合どうなるか?
[CSS3GCPM] の初期提案およびOperaの実装では paginate の代わりに "paged-x | paged-y | paged-x-controls | paged-y-controls" の4値を使っていた。 このプロパティにもこれらの値を含めるべきか、それとも別プロパティで扱うべきか? (例: "pagination-layout: auto | horizontal | vertical", "pagination-controls: auto | none")
一度にNページ表示できる機能は必要か? これは "pagination-layout: horizontal 2;" のような値で表現できるか?
Brad Kemperはページ分割とフラグメントオーバーフローを組み合わせ、複数ページ表示にも対応したモデルを提案している。https://www.w3.org/mid/FF1704C5-D5C1-4D6F-A99D-0DD094036685@gmail.com
現在のページ分割オーバーフローの実装は [CSS3GCPM] 草案で提案されていた overflow-style プロパティ([CSS3-MARQUEE] の提案にも一致)ではなく、 overflow/overflow-x/overflow-y プロパティまたはここで述べる continue プロパティを使用している。
それとも要素の次兄弟として扱うべきか?他のボックスレベルの調整との相互作用を明確にする必要がある。
ただし multi-column container を定義している。
外側のフラグメント化コンテキストへの強制ブレークは、単一フラグメントボックスの新しいフラグメント、または新しいフラグメントボックスを生成すべきか?
fragment box 以外の用語を探した方がわかりやすくなるか?
他の種類のフラグメント化コンテキスト内で分割された要素の各部分をスタイル指定したい場合はどうすべきか? これらのルールでは ::nth-fragment() を使えないが、名称としては最も論理的な気がする。
continue: fragments は少なくとも一部のテーブル要素および他の要素にも適用すべきではないことを明記する必要がある。 どの要素かを確定する必要がある。
この仕様ではどの種類のフラグメント化コンテキストが作成されるかを明記する必要があり、 break-* プロパティがそのコンテキスト内でどのようにブレークを引き起こすかを明確にすべき。 おそらく break-*: region を適用すべき。
この仕様は、レイアウトがフラグメントの本来のサイズを利用して利用可能なスペースを変化させる場合(例:[CSS3-GRID-LAYOUT])に適用される処理モデルを必要とする。 すでに [CSS-REGIONS-1] でそのような処理モデルが検討されており、 そこで得られた知見や編集者の意見をこの仕様にも反映すべき。
今後の議論によっては、この ::nth-fragment(an+b) 構文は 新しい ::fragment:nth(an+b) 構文に置き換えられる可能性がある。
continue:fragmentsのみに適用すべきか、それともcontinue:paginateにも適用すべきか? (もし適用するなら、continue:paginateにはより厳格なプロパティ制限が必要になる。)
これをカスケードモジュールでも明記する必要があるか?
この仕組みの詳細を明確に定義する必要がある。
この継承ルールにより、直接指定できないスタイル(inherit を明示的に使用する場合や、::first-letter に適用されないプロパティのデフォルト継承)が間接的に指定できる。 これは問題となる。 フラグメント内のスタイリングに適用される制限は、フラグメントからの継承にも適用されるべき。
continue:fragmentsのみに適用すべきか、それともcontinue:paginateにも適用すべきか?
このセクションは scrollbar-gutter プロパティの拡張の現状を記載しています。 しかし、まだ合意には至っていません。 議論のために提示されており、非実験的な実装は推奨されません。
Appleはこの値の追加に消極的です。 著者がインタラクティブ要素が必要ない場合でもオーバレイスクロールバー付きでグラターを挿入しすぎて、オーバレイスクロールバーの省スペースという利点が損なわれてしまう可能性があるためです。

別案として、インタラクティブ要素を対象に、スクロールバーの下に入り込まないようにするプロパティを要素に適用するという提案があります。 このプロパティを有効にすると、要素の右または左のマージンがちょうどよい値だけ拡大され、オーバレイスクロールバーの下に入り込まないようにします。 必要ない場合は変更されません。

さらに、両端のマージンを同時に拡げるか、どちらも拡げないかを切り替えるオプションも考えられます。 これは、可視の境界線や背景を持つスクローラーのブロックレベルの子に有用です。 一方だけスペースを追加するとスクロールバーが消えたときに中央からずれてしまうので、両側に追加するとバランスが取れます。

また、マージンではなくパディングを拡げて要素の内容を保護する選択肢も考えられます。

構文例:scrollbar-avoid: none | [self | content] && both-edges?

この仕組みがあれば scrollbar-gutter: match-parent の必要性が減るかもしれません。 親に scrollbar-gutter: stablescrollbar-gutter: always を指定し、 子に scrollbar-gutter: match-parent を指定する状況は、 親を scrollbar-gutter: auto のままにして、該当する子に scrollbar-avoid: selfscrollbar-avoid: content を使えば解決できそうです。

この値が全要素に適用されるようになったのは、スクロールコンテナ だけでなく、 overflow: visible 要素にも適用できるようにするためです。 これにより実装が難しくなります。 ユーザーエージェントは従来のコードを流用してグラターを配置できない場合が出てきます。 overflow が適用される全要素に制限すればユースケースに悪影響はなく、実装も容易になるでしょうが、 それでも スクロールコンテナ のみよりは難しいかもしれません。
上記の実装課題に加え、この値が意図通りきちんと問題を解決できるかは明確ではありません。 スクロールバーやグラターのサイズ・位置はUA定義なので、要素ごとに異なる可能性があります。 スクロールバーの見え方や位置はUAの裁量によるため、影響するプロパティのリストに制約はありません。 direction (HTMLの dir 属性による)や scrollbar-width などを設定すれば、 その要素がスクロール可能になった場合にUAがどのようなスクロールバーを作成するか推測でき、その分だけグラターも正しい場所・サイズで作れるはずですが、保証はできません。
仕様初期ではこの値だけが例のような効果を出す唯一の方法だったが、 現在は scrollbar-gutter: stableoverflow: hidden 要素に適用できるようになった。 overflow: hidden は他の副作用もあるが、 scrollbar-gutter: stableoverflow: hidden の組み合わせでも scrollbar-gutter: stable force と同様のスペースが得られるので、他の課題を考慮しても十分な回避策となる可能性がある。
未定