CSSスクロールスナップモジュール レベル2

W3C 初回公開作業草案

この文書の詳細情報
このバージョン:
https://www.w3.org/TR/2024/WD-css-scroll-snap-2-20240723/
最新公開バージョン:
https://www.w3.org/TR/css-scroll-snap-2/
編集者草案:
https://drafts.csswg.org/css-scroll-snap-2/
履歴:
https://www.w3.org/standards/history/css-scroll-snap-2/
実装報告:
https://wpt.fyi/results/css/css-scroll-snap
フィードバック:
CSSWG イシューレポジトリ
仕様内インライン
編集者:
Tab Atkins-Bittner (Google)
Elika J. Etemad / fantasai (Apple)
Adam Argyle (Google)
元編集者:
Matt Rakow (Microsoft)
Jacob Rossi (Microsoft)
この仕様への編集提案:
GitHub エディター

概要

このモジュールは「スナップ位置」を使ってパンやスクロールの挙動を制御する機能を含みます。

CSSは構造化された文書(HTMLやXMLなど)の表示方法を、 画面上や印刷などで記述するための言語です。

この文書のステータス

このセクションは公開時点の文書ステータスを説明します。 最新のW3C出版物一覧や、この技術レポートの最新改訂版は https://www.w3.org/TR/ のW3C技術レポート索引で確認できます。

この文書は CSS作業グループによって 初回公開作業草案として 勧告トラックを用いて発行されました。 初回公開作業草案としての公開は W3Cおよびその会員による承認を意味するものではありません。

この文書は草案であり、今後いつでも更新、置換、廃止される可能性があります。 作業中の文書以外として引用するのは不適切です。

フィードバックは GitHubでIssueを提出(推奨)、 件名に仕様コード「css-scroll-snap」を含めてください(例:「[css-scroll-snap] …コメント要約…」)。 すべてのIssueとコメントはアーカイブされています。 または、(アーカイブあり) 公開メーリングリスト www-style@w3.orgへ送信できます。

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

この文書は W3C特許方針の下で運営されるグループによって作成されました。 W3Cはグループの成果物に関連して行われた特許開示の公開リストを管理しています。 そのページでは特許開示方法も案内しています。 個人が特許に関する実際の知識を持ち、 必須クレーム を含むと考える場合は、 W3C特許方針第6節に従って情報開示しなければなりません。

CR期間中にテストスイートと実装報告が作成されます。

1. はじめに

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

これは現在、Scroll Snap 1に対する差分仕様です。

スクロール体験は必ずしも最初から始まるとは限りません。カルーセルやスワイプコントロール、リストビューなどの操作は、スクロールコンテナの先頭に位置しない要素から始めることを意図する場合がよくあります。 JavaScriptが必要となり、スクロールコンテナを初期的にその要素までスクロールさせます。CSSで要素を最初にスクロールする指定ができるようにすることで、ユーザー・ページ作者・ブラウザのすべてに利点があります。

初期スクロールターゲットの設定に加えて、開発者はScroll Snapに関する洞察やイベントも必要です。 どの要素がどの軸でスナップされたか、スナップイベントが変化したとき、 スナップが完了したとき、子要素へプログラムでスナップするための利便性などのイベントが求められます。

1.1. 最初のレイアウト

このイベントはアニメーションのコードパスに従うべきです。アニメーションオブジェクトが生成され、イベントが発火する際、ボックスが初めてレイアウトされます。

2. 動機付けとなる例

カルーセルが中央の画像までスクロールされた状態で開始される例:
.carousel {
    overflow-inline: auto;
}
.carousel .origin {
    scroll-start-target: auto;
}
<div class="carousel">
    <img src="img1.jpg">
    <img src="img2.jpg">
    <img src="img3.jpg" class="origin">
    <img src="img4.jpg">
    <img src="img5.jpg">
</div>
ユーザーがスクロールして一番上に戻ると検索バーが利用可能になる例:
.scrollport {
    overflow-block: auto;
}

main {
    scroll-start-target: auto;
}
<div class="scrollport">
    <nav>
        ...
    </nav>
    <main>
        ...
    </main>
</div>

3. スクロール開始位置の設定

3.1. scroll-start-target プロパティ

3.1.1. 初期スクロールターゲット

初期スクロールターゲットは、scroll container scrollcontainerの 'scroll-start-target’プロパティが none 以外に設定されていて、最も近い scroll containerscrollcontainer である要素または疑似要素です。 複数の要素や疑似要素が存在する場合、 ユーザーエージェントはツリー順序で最初に現れるものを選択するべきです。 そのような要素や疑似要素が存在しない場合、scrollcontainer初期スクロールターゲットは null です。

初期スクロールターゲットscroll container に存在する場合、 以下の手順に従って 初期スクロール位置 を決定するべきです:
  1. target初期スクロールターゲットとします。

  2. positiontarget に対して スクロールインビュー位置を決定する手順を実行した結果とします。 behavior を "auto"、block を "start"、inline を "nearest"、 scrolling boxscrollcontainer に設定します。

  3. scrollcontainer初期スクロール位置position を設定します。

3.1.2. scroll-start-target プロパティ定義

名前: scroll-start-target
値: [ none | auto ]
初期値: none
適用対象: すべての要素
継承性: no
パーセンテージ: N/A
算出値: 個々のプロパティ参照
正規順序: 文法に従う
アニメーション型: none
none
その要素は初期スクロールターゲットではありません。
auto
その要素は最近傍の 初期スクロールターゲットとなる可能性があります。その祖先は scroll containerです。

3.1.3. place-contentとの相互作用

scroll container初期スクロール位置が、コンテンツ分布プロパティと、子孫のscroll-start-targetの両方で設定される可能性がある場合、scroll-start-targetが優先されます。

3.1.4. 最初のレイアウト後の到着

文書が更新されている間、 scroll container初期スクロールターゲットが、そのscroll containerのレイアウト後に到着することがあります。 この場合、 ユーザーエージェントは、ユーザーが初期スクロール位置へのスクロールに興味がなくなったと考える理由がない限り、 初期スクロールターゲットへスクロールするべきです。

4. スナップされた項目のスタイリング

':snapped' 疑似クラスは、コンテナ状態クエリ手法に置き換えられつつあります。

4.1. スナップ要素疑似クラス: :snapped

:snapped 疑似クラスは、軸を問わず、すべてのスクロールスナップターゲットに一致します。 物理・論理軸ごとのロングフォーム疑似クラスセレクターを使うことで、個々の軸ごとにより細かくスナップされた子要素のスタイリングが可能です。

より具体的なオプションは以下のとおりです:

:snapped-x
水平軸でスナップされた子要素に一致します。
:snapped-y
垂直軸でスナップされた子要素に一致します。
:snapped-inline
インライン軸でスナップされた子要素に一致します。
:snapped-block
ブロック軸でスナップされた子要素に一致します。

注: Issue #6985
初期フレームの解決方法を検討する必要があります。

5. スナップイベント

5.1. scrollsnapchange および scrollsnapchanging

CSSスクロールスナップポイントは、スクロールインタラクティブな「選択」コンポーネントを作る仕組みとしてよく使われます。 選択はJavaScriptのintersection observerとスクロール終了の推測で判定されますが、組み込みイベントを用意することで、 これまで見えなかった状態を適切なタイミングで確実にアクション化できるようになります。

5.1.1. スナップターゲット

スナップターゲットは、ユーザーエージェントが 選択して、指定のスナップを行う要素や疑似要素です。スナップコンテナに対して選択されます。

イベント インターフェース ターゲット 説明
scrollsnapchange SnapEvent スクロールコンテナ スクロール要素またはDocument で、スクロール終了時(scrollend イベントの直前)、 またはレイアウトスナップ後に、 スクロール要素やDocumentがスナップされているスナップターゲットが変更された場合に発火します。
scrollsnapchanging SnapEvent スクロールコンテナ スクロール要素またはDocument でスクロール中(scroll イベントの直前)に、 スクロール操作によってスナップされる予定のスナップターゲットが、 直前にscrollsnapchangingイベントが発火したときに選択されていたスナップターゲットと異なる場合に発火します。

5.1.2. scrollsnapchange

scrollsnapchange は、スナップコンテナがどちらかの軸でスナップされたスナップエリアが変更されたことを示します。scrollsnapchange は以下の場合に発火します:

  1. スクロール操作が完了した際、ブロック軸またはインライン軸のいずれかで、 スナップコンテナが現在スナップされているスナップターゲットが、直近その軸でスナップされていたスナップターゲットと異なる場合。 proximity厳密度のスナップコンテナでは、スクロールによりどのスナップターゲットにもスナップされなくなる場合があります。 CSS Scroll Snap 1 § 6.2 Choosing Snap Positionsでは、ユーザーエージェントがスナップエリアとなる要素・疑似要素間で選択する方法を説明しています。
  2. スナップコンテナのスタイルが変更され、none以外の値からscroll-snap-typeの値がnoneになった場合、またはその逆の場合。
  3. レイアウト変更後に、スナップコンテナがスナップされるスナップターゲットが変更された場合(レイアウト変更後にスクロール位置が変化しなくても該当)。

スクロール操作では必ずscrollend イベントが発火します。 スクロール操作でscrollsnapchange イベントも発火する場合は、scrollsnapchange イベントはscrollend イベントより先に発火するべきです。

Document には、保留中scrollsnapchangeイベントターゲットリストが関連付けられており、初期状態は空です。

スナップコンテナは、 ブロック軸・インライン軸それぞれに scrollsnapchangeTargetBlockscrollsnapchangeTargetInline を持ちます。いずれもその軸でコンテナがスナップされていなければnull、されていればスナップされているスナップターゲットです。

scrollsnapchangeターゲットを更新する場合、snapcontainerについて次の手順を実行します:

  1. docsnapcontainer に関連付けられたDocumentとします。

  2. blockTargetscrollsnapchangeTargetBlockとします。

  3. inlineTargetscrollsnapchangeTargetInlineとします。

  4. blockScrollSnapchangingTargetscrollsnapchanging block軸ターゲットとします。

  5. inlineScrollSnapchangingTargetscrollsnapchanging inline軸ターゲットとします。

  6. snap targets changed というブール値フラグを初期値falseで用意します。

  7. blockTargetスナップターゲットとして blockScrollSnapchangingTargetと異なる場合:

    1. snapcontainerに関連付けられたscrollsnapchangeTargetBlockblockScrollSnapchangingTargetに設定します。

    2. snap targets changedをtrueに設定します。

  8. inlineTargetスナップターゲットとして inlineScrollSnapchangingTargetと異なる場合:

    1. snapcontainerに関連付けられたscrollsnapchangeTargetInlineinlineScrollSnapchangingTargetに設定します。

    2. snap targets changedをtrueに設定します。

  9. snap targets changedがtrueの場合:

    1. snapcontainerdoc保留中scrollsnapchangeイベントターゲットリストにまだ含まれていない場合:

      1. snapcontainerdoc保留中scrollsnapchangeイベントターゲットリストに追加します。

注: スクロール操作やレイアウト変更でスナップが発生した場合、該当スクローラーのscrollsnapchanging block軸ターゲットおよびscrollsnapchanging inline軸ターゲットが更新され、現時点のスナップターゲットを表します。これにより、scrollsnapchangeターゲット更新アルゴリズムでこれらスナップターゲットを使ってscrollsnapchangeイベントを発火するかどうか判断できます。

保留中scrollsnapchangeイベントをdispatchする ために、Document docについて次の手順を実行します:

  1. doc保留中scrollsnapchangeイベントターゲットリスト内の各targetについて:

    1. blockTargetおよびinlineTargetを初期値nullで用意します。

    2. scrollsnapchangeTargetBlockが疑似要素の場合、 blockTargetにそのscrollsnapchangeTargetBlockの所有要素を設定します。

    3. そうでなければ、blockTargetscrollsnapchangeTargetBlockを設定します。

    4. scrollsnapchangeTargetInlineが疑似要素の場合、 inlineTargetにそのscrollsnapchangeTargetInlineの所有要素を設定します。

    5. そうでなければ、inlineTargetscrollsnapchangeTargetInlineを設定します。

    6. SnapEvent snapeventを、scrollsnapchange という名前でtargetに発火し、snapeventsnapTargetBlock 属性とsnapTargetInline 属性には、それぞれblockTargetinlineTargetを設定します。

  2. doc保留中scrollsnapchangeイベントターゲットリストを空にします。

5.1.3. scrollsnapchanging

scrollsnapchanging は以下の場合に発火されます:

スクロール操作は、特定の位置までアニメーションする場合(例: スクロールバーの矢印クリック、矢印キー操作、"behavior: smooth" のプログラム的スクロール)や、ユーザー入力を直接追従する場合(例: タッチスクロール、スクロールバーのドラッグ)があります。いずれの場合も、ユーザーエージェントは各軸ごとに、スクロール操作が意図したスクロール位置に到達した際に選択される最終的なスナップターゲットを決定します。

scrollsnapchanging は、スクロール操作によってスナップコンテナがスナップされるスナップターゲットが変化することを、できるだけ早い段階でウェブページに知らせることを目的としています。ユーザーエージェントは、scrollsnapchanging を発火するかどうかを、スクローラーがスクロール操作により意図したスクロール位置に到達した場合に最終的なスナップターゲットスナップされるかどうかで評価するべきです。

注: scrollsnapchangingは将来のスナッピングに関するヒントをウェブページに与えるため、scrollsnapchangingイベントで示唆されたスナップが実際に発生しない可能性もあります。後続のスクロール入力によって、コンテナのスクロール位置が更に変化し、最終的なスナップターゲットが異なるものになることがあるためです。

scrollsnapchanging イベントはscroll イベントよりも先に発火します。

Document には、保留中scrollsnapchangingイベントターゲットリストが関連付けられており、初期状態は空です。

スナップコンテナは、 ブロック軸・インライン軸それぞれに scrollsnapchanging block軸ターゲットscrollsnapchanging inline軸ターゲット を持ちます。いずれもその軸でコンテナがスナップされていなければnull、されていればスナップされているスナップターゲットです。

scrollsnapchangingターゲットを更新する場合、snapcontainerについて、新しいブロック軸のスナップターゲットnewBlockTargetと 新しいインライン軸のスナップターゲットnewInlineTargetを与えて、以下の手順を実行します:

  1. docsnapcontainer に関連付けられたDocumentとします。

  2. blockTargetscrollsnapchanging block軸ターゲットとします。

  3. inlineTargetscrollsnapchanging inline軸ターゲットとします。

  4. newBlockTargetスナップターゲットとして blockTargetと異なる場合:

    1. snapcontainerに関連付けられたscrollsnapchanging block軸ターゲットnewBlockTargetに設定します。

    2. snapcontainerdoc保留中scrollsnapchangingイベントターゲットリストに含まれていない場合、

      1. snapcontainerdoc保留中scrollsnapchangingイベントターゲットリストに追加します。

  5. newInlineTargetスナップターゲットとして inlineTargetと異なる場合:

    1. snapcontainerに関連付けられたscrollsnapchanging inline軸ターゲットnewInlineTargetに設定します。

    2. snapcontainerdoc保留中scrollsnapchangingイベントターゲットリストに含まれていない場合、

      1. snapcontainerdoc保留中scrollsnapchangingイベントターゲットリストに追加します。

保留中scrollsnapchangingイベントをdispatchする ために、Document docについて次の手順を実行します:

  1. doc保留中scrollsnapchangingイベントターゲットリスト内の各targetについて:

    1. blockTargetおよびinlineTargetを初期値nullで用意します。

    2. scrollsnapchanging block軸ターゲットが疑似要素の場合、 blockTargetにそのscrollsnapchanging block軸ターゲットの所有要素を設定します。

    3. そうでなければ、blockTargetscrollsnapchanging block軸ターゲットを設定します。

    4. scrollsnapchanging inline軸ターゲットが疑似要素の場合、 inlineTargetにそのscrollsnapchanging inline軸ターゲットの所有要素を設定します。

    5. そうでなければ、inlineTargetscrollsnapchanging inline軸ターゲットを設定します。

    6. SnapEvent snapeventを、scrollsnapchanging という名前でtargetに発火し、snapeventsnapTargetBlock 属性とsnapTargetInline 属性には、それぞれblockTargetinlineTargetを設定します。

  2. doc保留中scrollsnapchangingイベントターゲットリストを空にします。

5.1.4. レイアウト変更によるスナップイベント

snap containersnapcontainer)が再スナップされる場合、以下の手順を実行します:
  1. newBlockTargetsnapcontainerがブロック軸でスナップされたスナップターゲット(要素がない場合はnull)とします。

  2. newInlineTargetsnapcontainerがインライン軸でスナップされたスナップターゲット(要素や疑似要素がない場合はnull)とします。

  3. scrollsnapchangingターゲットを更新する手順をnewBlockTargetおよびnewInlineTargetで実行します。

  4. scrollsnapchangeターゲットを更新する手順をsnapcontainerで実行します。

5.2. SnapEvent インターフェース

dictionary SnapEventInit : EventInit {
  Node? snapTargetBlock;
  Node? snapTargetInline;
};

[Exposed=Window]
interface SnapEvent : Event {
  constructor(DOMString type, optional SnapEventInit eventInitDict = {});
  readonly attribute Node? snapTargetBlock;
  readonly attribute Node? snapTargetInline;
};
snapTargetBlock, 型: Node, readonly, null許容

関連するスナップイベントにおいて、スナップコンテナがブロック軸でスナップ位置にスナップされている要素です。このスナップターゲットが疑似要素だった場合は、その所有要素となります。

snapTargetInline, 型: Node, readonly, null許容

関連するスナップイベントにおいて、スナップコンテナがインライン軸でスナップ位置にスナップされている要素です。このスナップターゲットが疑似要素だった場合は、その所有要素となります。

scrollsnapchange イベントでは、スナップ位置はスクロールスナップ後にコンテナが実現した位置です。scrollsnapchanging イベントでは、スクロール操作が終わったときコンテナが最終的にスナップされる位置です。

SnapEventは、イベントターゲットがDocumentの場合を除き、バブルしません。 SnapEventはキャンセル不可です。

付録A: イベントハンドラー

このセクションはHTMLのイベントハンドラー仕様に移動すべきです。

要素・Documentオブジェクト・Windowオブジェクトのイベントハンドラー

以下は、すべてのイベントハンドラー(および対応するイベントハンドラーイベントタイプ)の追加分です。 すべてのHTML要素イベントハンドラー内容属性およびイベントハンドラーIDL属性としてサポートしなければならず、 すべてのWindow オブジェクトおよびDocument オブジェクトも、イベントハンドラーIDL属性としてサポートしなければなりません:

イベントハンドラー イベントハンドラーイベントタイプ
onscrollsnapchange scrollsnapchange
onscrollsnapchanging scrollsnapchanging

GlobalEventHandlersインターフェースMixinへの拡張

この仕様はHTMLのGlobalEventHandlers インターフェースMixinを拡張し、 イベントハンドラーIDL属性としてSnapEvent向けの属性を追加します。 詳細は要素・Documentオブジェクト・Windowオブジェクトのイベントハンドラーを参照してください。

IDL定義

partial interface mixin GlobalEventHandlers {
  attribute EventHandler onsnapchanged;
  attribute EventHandler onsnapchanging;
};

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

この仕様の機能には、既知のプライバシーへの影響はありません。

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

この仕様の機能には、既知のセキュリティへの影響はありません。

適合性

文書上の慣例

適合性要件は、記述的な断言と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レンダラーは、利用可能なレベルのサポートがないすべての@規則・プロパティ・プロパティ値・キーワード・その他文法構造を無効として(そして適切に無視)扱わなければなりません。特に、ユーザーエージェントはサポートしていないコンポーネント値のみを選択的に無視し、サポートされている値のみをひとつの複数値プロパティ宣言で適用することはしてはなりません。いずれかの値が無効(サポートされない値は必ず無効)と見なされた場合、CSSは宣言全体を無視することを要求します。

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

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

非実験的な実装

仕様がCandidate Recommendation(CR)段階に達した場合、実験的でない実装が可能となり、実装者は仕様に基づき正しく実装できることが示せるCRレベルの機能について、プリフィックスなしでリリースすべきです。

CSSの相互運用性を確立・維持するため、CSS作業グループは、非実験的なCSSレンダラーに対して、仕様書に基づいて正しく実装できていることを示す実装報告(必要に応じてその実装報告で使われたテストケースも)をW3Cに提出するよう要請しています。提出されたテストケースはCSS作業グループによるレビューおよび修正の対象となります。

テストケースおよび実装報告の提出方法についてはCSS作業グループのウェブサイト https://www.w3.org/Style/CSS/Test/ を参照してください。 質問は public-css-testsuite@w3.org メーリングリストへ。

索引

本仕様で定義される用語

参照定義された用語

参考文献

規定参考文献

[CSS-ALIGN-3]
Elika Etemad; Tab Atkins Jr.. CSSボックスアラインメントモジュール レベル3。2023年2月17日。WD。URL: https://www.w3.org/TR/css-align-3/
[CSS-DISPLAY-3]
Elika Etemad; Tab Atkins Jr.. CSS表示モジュール レベル3。2023年3月30日。CR。URL: https://www.w3.org/TR/css-display-3/
[CSS-OVERFLOW-3]
Elika Etemad; Florian Rivoal. CSSオーバーフローモジュール レベル3。2023年3月29日。WD。URL: https://www.w3.org/TR/css-overflow-3/
[CSS-SCROLL-SNAP-1]
Matt Rakow; 他。CSSスクロールスナップモジュール レベル1。2021年3月11日。CR。URL: https://www.w3.org/TR/css-scroll-snap-1/
[CSS-VALUES-4]
Tab Atkins Jr.; Elika Etemad. CSS値と単位モジュール レベル4。2024年3月12日。WD。URL: https://www.w3.org/TR/css-values-4/
[CSSOM-VIEW-1]
Simon Pieters. CSSOMビュー モジュール。2016年3月17日。WD。URL: https://www.w3.org/TR/cssom-view-1/
[DOM]
Anne van Kesteren. DOM標準。リビングスタンダード。URL: https://dom.spec.whatwg.org/
[HTML]
Anne van Kesteren; 他。HTML標準。リビングスタンダード。URL: https://html.spec.whatwg.org/multipage/
[RFC2119]
S. Bradner. RFCsにおける要件レベルを示すキーワード。1997年3月。Best Current Practice。URL: https://datatracker.ietf.org/doc/html/rfc2119
[WEBIDL]
Edgar Chen; Timothy Gu. Web IDL標準。リビングスタンダード。URL: https://webidl.spec.whatwg.org/

プロパティ索引

名前 初期値 適用対象 継承 %ages アニメーション型 正規順序 算出値
scroll-start-target [ none | auto ] none すべての要素 no N/A none 文法に従う 個々のプロパティ参照

IDL索引

dictionary SnapEventInit : EventInit {
  Node? snapTargetBlock;
  Node? snapTargetInline;
};

[Exposed=Window]
interface SnapEvent : Event {
  constructor(DOMString type, optional SnapEventInit eventInitDict = {});
  readonly attribute Node? snapTargetBlock;
  readonly attribute Node? snapTargetInline;
};

partial interface mixin GlobalEventHandlers {
  attribute EventHandler onsnapchanged;
  attribute EventHandler onsnapchanging;
};

課題索引

':snapped' 疑似クラスは、container state query手法に置き換えられつつあります。
このセクションはHTMLのイベントハンドラー仕様に移動すべきです。