CSSスクロールバーのスタイリングモジュール レベル 1

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

この文書の詳細情報
このバージョン:
https://www.w3.org/TR/2021/CR-css-scrollbars-1-20211209/
最新公開バージョン:
https://www.w3.org/TR/css-scrollbars-1/
編集者草案:
https://drafts.csswg.org/css-scrollbars/
履歴:
https://www.w3.org/standards/history/css-scrollbars-1
実装報告:
https://wpt.fyi/results/css/css-scrollbars?label=experimental&label=master&aligned
フィードバック:
CSSWG課題リポジトリ
編集者:
Tantek Çelik (Mozilla)
(Microsoft)
Florian Rivoal (招待エキスパート)
この仕様への編集提案:
GitHubエディター

概要

このCSSモジュールは、スクロールバーの視覚的なスタイリングに影響を与えるプロパティを定義し、色や幅を制御するための手段を導入します。

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

この文書のステータス

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

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

フィードバックはGitHubでIssue提出(推奨)によりお送りください。 件名に仕様コード “css-scrollbars” を含めてください(例: “[css-scrollbars] …コメント要約…”)。 すべてのIssueやコメントはアーカイブされます。 または、(アーカイブ済み)のパブリックメーリングリスト www-style@w3.org へ送信することもできます。

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

この文書は、W3C特許ポリシーの下で運営されるグループによって作成されました。 W3Cは、グループの成果物に関連して提出された特許開示の公開リストを管理しています。 そのページには特許開示方法の説明もあります。 個人が特許の存在を認識し、その特許に必須クレームが含まれていると考える場合は、 W3C特許ポリシー第6節に従って情報を開示する必要があります。

1. はじめに

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

このCSSモジュールは、スクロールバーの視覚的なスタイリングに影響を与えるプロパティを導入します。 色(scrollbar-color)や太さ(scrollbar-width)などが含まれます。

1.1. 対象範囲

CSS Scrollbars Moduleは、スクロールバーコントロール自体のスタイリング専用です。 例えば、レベル1では色や幅を指定できますが、レイアウトやコンテンツがスクロール可能かどうかは対象外です。 レイアウトへの影響やスクロール可能性については、CSS Overflow Moduleで定義されています。

文書化されたユースケースに基づき、 本モジュールが解決を目指すスクロールバーに関する主なユースケースは3つあります:

  1. スクロールバーの色をWebアプリケーションのUIに合わせて調整する。
  2. スクロール領域が小さい場合、より細いスクロールバーを使用する。
  3. UAが提供するスクロールバーを非表示にし、 スクロール用のカスタムインターフェイスを提供することで、 他のスクロール可能性は維持しつつ独自UIを実現する。

1.1.1. 対象外

スクロールバーの内部構造、レイアウト、構成、 そして色の精密な制御は対象外です。 これは、プラットフォームごとにスクロールバーの構造やスタイリング慣習が異なり、 OSもより良いユーザー体験のためにスクロールバーのデザインを進化させ続けているためです。 スクロールバーの特定部分を選択する疑似要素などは検討されたものの、採用されませんでした。 このような細かな制御は制作者にとって魅力的ですが、 部品の配置や存在自体がプラットフォームによって異なるため、信頼できません。 過度な制御を許すと、一部プラットフォームでは完璧な結果が得られますが、 他のプラットフォームでは表示が崩れる原因となります。

注: スクロールバー関連の ::-webkit- 接頭辞付き疑似要素をWebに公開することは、 CSS作業グループおよびWebkit双方が誤りだと考えています。

1.2. 値の定義

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

プロパティごとの固有値以外にも、 本仕様で定義されるすべてのプロパティはCSS全域キーワードも値として受け付けます。 可読性のため、ここでは明示的に繰り返していません。

2. スクロールバーの色: scrollbar-color プロパティ

名前: scrollbar-color
値: auto | <color>{2}
初期値: auto
対象: スクロールコンテナ
継承: はい
パーセンテージ: 該当なし
算出値: 指定されたキーワードまたは2つの算出色
正規順序: 文法による
アニメーション型: 算出値による

このプロパティは要素のスクロールバーの色を設定できます。

UAはルート要素に設定されたscrollbar-color値をビューポートに適用しなければなりません。

注: overflow (およびoverflow-*)プロパティとは異なり、 HTML body要素に設定されたscrollbar-color値はビューポートには伝わりません。

auto
ユーザーエージェントがスクロールバーの色を決定します。 プラットフォームの慣習に従うべきですが、color-schemeやその他のコンテキスト情報に応じて ページに適した色に調整しても構いません。
<color>
1番目の色がスクロールバーのthumbに、2番目の色がtrackに適用されます。

詳細:

trackはスクロールバーの背景部分を指し、 通常スクロール位置に関係なく固定されています。

thumbはスクロールバーの可動部分で、 通常trackの上に浮かんで表示されます。

このプロパティがauto以外に算出された場合、 実装はデフォルトのプラットフォームUIレンダリングよりも単純なスクロールバーをレンダリングし、 指定された色で着色しても構いません。

注: ネイティブスクロールバーの構造やネイティブツールキットの制限などで UAが色をカスタマイズできない場合があります。 この場合、UAは色付け可能な異なる構造のスクロールバーに置き換えることができます。

(注: 各部品名称を示す図を追加予定 - http://www.howtocreate.co.uk/tutorials/scrlbar.html など)

(注: ページスタイリングに合わせて色付けされたスクロールバーの例を追加予定。対応ブラウザでのPNG画像など)

実装は、該当部分がプラットフォームに存在しない場合は指定された色を無視しても構いません。

scrollbar-colorプロパティで特定の色を指定する場合、 制作者は指定色同士のコントラストが十分か確認してください。 キーワード値の場合、UAは十分なコントラストを持つ色を使用するべきです。 WCAG 2.1 SC 1.4.11 非テキストコントラスト [WCAG21]を参照。 UAは、ユーザーの明示的な設定(例えば常に特定のスクロールバー色やシステムデフォルトの使用)に基づき これらのコントラスト要件を無視しても構いません。

注: ユーザーがスクロールバーを操作(例: ホバーやアクティブ化)した際、 実装はどの色がどの部品に適用されるかを変更しても構いません。

注: IEは各スクロールバー色プロパティのデフォルトとして システムカラー名を使用しています。 関連 Issue 1956も参照。

以下の例(https://www.w3.org/Style/Examples/007/scrollbars.en.htmlより引用)は、 IEでスクロールバーの色をリセットします。

html {
    scrollbar-color: ThreeDFace Scrollbar;
}

3. スクロールバーの太さ: scrollbar-width プロパティ

名前: scrollbar-width
値: auto | thin | none
初期値: auto
対象: スクロールコンテナ
継承: いいえ
パーセンテージ: 該当なし
算出値: 指定されたキーワード
正規順序: 文法による
アニメーション型: 算出値による

このプロパティは要素のスクロールバーの太さを指定できます。

このプロパティの主目的は、 ページの特定の小さな要素や狭い要素に細いスクロールバーが望ましい場合に、 制作者がその意図を示すことであり、 ページ全体のスクロールバーの美観を選択するためではありません。

スクロールバーはページ操作に不可欠なUI機構です。 OSはこうしたコントロールの一貫性を重視し、慣れによる使いやすさを高めます。 また、ユーザーはOSやUAの設定でスクロールバーなどUI部品の外観を調整できます。

特定のUX目的でこのプロパティを使う場合は適切ですが、 それ以外ではユーザー設定を上書きしないようにしてください。

auto
実装はデフォルトのスクロールバー幅を使用しなければなりません。

注: ほとんどのシステムでは、これは従来のやや幅広なスクロールバーに相当します。 ただし、OSやUAの設定によってデフォルトがより幅広や細いスクロールバーになることもあります。

thin
実装はautoより細いスクロールバーを使用するべきです。 これはプラットフォームが提供する細いスクロールバーのバリエーションや、 デフォルトより細いカスタムスクロールバーなどを意味します。 ただし、スクロールバーは十分な操作性を持つ幅でなければなりません。 (実装者はWCAG 2.1 SC 2.5.5 ターゲットサイズ [WCAG21]を参照してもよいでしょう)

注: ユーザーエージェントは細いスクロールバーの操作性を確保するため、様々な工夫が可能です。 例えば、オーバーレイスクロールバーの場合、 ユーザーが操作しようとした際に動的にスクロールバーを拡大することができます。 タッチスクリーン搭載デバイスのUAは、視覚的に小さいターゲットへのタップ解釈を調整することもできます。

ユーザーがUAやOS設定で細いスクロールバーに不快感を示した場合など、 UAはこの値を無視しautoとして扱っても構いません。 (UAはこのような設定を提供することが推奨されます。)

注: 一部プラットフォームではデフォルトが非常に細いスクロールバーであり、 それ以上細くできない場合もあります。 その場合、この値はautoとして動作します。

none
実装はスクロールバーを表示しないようにしなければなりませんが、 他の手段による要素のスクロール可能性には影響しません。
この値を使うことで、マウスのみのユーザーがスクロールできなくなる可能性があります。 制作者はスクロールホイールのないマウスユーザーでも隠れたコンテンツにアクセスできるよう配慮してください。
noneを使用する制作者は、 スクロール可能・コンテンツがさらにあることが分かる代替・同等の視覚的ヒントを提供してください。

注: 要素をプログラム的にのみスクロールさせ、 ユーザーが直接操作しない場合は、 overflow: hiddenscrollbar-width: noneの代わりに使ってください。

注: thinスタイルのスクロールバーが使いづらいと感じるユーザーは、 ユーザースタイルシートに 以下のルールを追加できます:
* { scrollbar-width: auto !important; }

これにより、制作者のスタイルに関係なく、すべてのスクロールバーがOS・UA設定通りのサイズになります。

UAはルート要素に設定されたscrollbar-width値をビューポートに適用しなければなりません。

注: overflowプロパティ(およびそのロングハンド)とは異なり、 HTML body 要素に設定されたscrollbar-width値はビューポートには伝播しません。

注: この仕様はスクロールバーの正確な位置や形状、 フェードイン・アウトやスライドなどのアニメーションも定義しません。

付録A. 謝辞

この付録は規範的ではありません

ユースケースの検討、試作、実装、フィードバックに対し Tab Atkins 氏および Xidorn Quan 氏に感謝します。 アクセシビリティのレビューと貢献(#3315)については Patrick H. Lauke 氏に感謝します。

付録B. 変更履歴

この付録は規範的ではありません

2021-12-02 作業草案以降の変更

2021-08-05 作業草案からの変更

2018-09-25 初公開作業草案からの変更

付録C. セキュリティおよびプライバシーの考慮事項

この付録は規範的ではありません

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

この仕様に関して、特にセキュリティ上の懸念は特定されていません。

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

この仕様に関して、特にプライバシー上の懸念は特定されていません。

自己レビュー質問票

セキュリティ・プライバシー自己レビュー質問票に従って:

  1. この仕様は個人識別情報を扱いますか?

    いいえ。

  2. この仕様は高価値データを扱いますか?

    いいえ。

  3. この仕様は、ブラウジングセッション間で永続するオリジンの新しい状態を導入しますか?

    いいえ。

  4. この仕様は、ウェブに永続的なクロスオリジン状態を公開しますか?

    いいえ。

  5. この仕様は、現在アクセスできない他のデータをオリジンに公開しますか?

    いいえ。

  6. この仕様は新しいスクリプト実行・ロード機構を有効にしますか?

    いいえ。

  7. この仕様はオリジンにユーザーの位置情報へのアクセスを許可しますか?

    いいえ。

  8. この仕様はオリジンにユーザー端末のセンサーへのアクセスを許可しますか?

    いいえ。

  9. この仕様はオリジンにユーザーのローカル計算環境の側面へのアクセスを許可しますか?

    いいえ。

  10. この仕様はオリジンに他のデバイスへのアクセスを許可しますか?

    いいえ。

  11. この仕様はオリジンにユーザーエージェントのネイティブUIの一部制御を許可しますか?

    はい。scrollbar-* プロパティにより、ページはユーザーエージェントのネイティブUI(ウィンドウや埋め込みフレーム、ページ内のスクロールバーなど)の色や幅を変更できます。

  12. この仕様はウェブに一時的な識別子を公開しますか?

    いいえ。

  13. この仕様はファーストパーティとサードパーティのコンテキストで動作が異なりますか?

    いいえ。

  14. この仕様はユーザーエージェントの「シークレットモード」でどのように動作するべきですか?

    通常と変わりません。

  15. この仕様はユーザーのローカルデバイスにデータを永続化しますか?

    いいえ。

  16. この仕様には「セキュリティに関する考慮事項」と「プライバシーに関する考慮事項」セクションがありますか?

    はい。

  17. この仕様はデフォルトのセキュリティ特性をダウングレードすることを許可しますか?

    いいえ。

付録D. アクセシビリティに関する考慮事項

この付録は規範的ではありません

プロパティ定義に記載の通り、 制作者は scrollbar-width: thin の使用に伴うアクセシビリティへの影響に注意する必要があります。 スクロールバーはユーザーエージェントのインターフェースにおいて重要な役割を持つため、 単なる美観のためにウェブサイト制作者がそのサイズを変更するのは適切ではありません。 このプロパティは、ウェブページの狭い領域で細いスクロールバーを使う方が効果的と考えられる場合に、 制作者が意図を示すために利用できます。 しかし、最終的にはユーザーが自身のユーザーエージェントを通じてその選択の決定権を持つべきです。

このようなケースで本プロパティを使うことは、 制作者がスクリプトや独自拡張で細いスクロールバーを自作するよりも望ましく、 ユーザーは上書きする機会を得ることができます。

ユーザースタイルシートによる上書きも可能であり、 さらにユーザーエージェントは細いスクロールバーの使用を望まないユーザーのための設定を公開することが推奨されます。

CSS作業グループは、通常よりも幅広なスクロールバーが必要なユーザーのニーズも認識しています。 OSやユーザーエージェントはそのような希望を表明できる手段を提供でき、CSSはその選択を尊重します。

適合性

文書慣例

適合性要件は、記述的な主張と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"を使い規範的テキストから区別されます:

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

アドバイスは特別な注意を喚起するために規範的セクションとして示され、<strong class="advisement">で他の規範的テキストから区別されます。例: UAはアクセシブルな代替手段を提供しなければなりません。

適合クラス

この仕様への適合性は、3つの適合クラスに対して定義されます:

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

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

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

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

部分的な実装

制作者が前方互換の構文解析規則を活用してフォールバック値を指定できるよう、CSSレンダラーは利用可能な機能がないat-rule、プロパティ、プロパティ値、キーワード、および他の構文構造を無効として(必要に応じて無視する)必要があります。特に、ユーザーエージェントは、サポートされていないコンポーネント値を選択的に無視し、単一の複数値プロパティ宣言のサポートされる値のみを適用することはしてはなりません:いずれかの値が無効(サポートされていない値は必ず無効)とみなされる場合、CSSでは宣言全体を無視する必要があります。

不安定・独自機能の実装

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

非実験的な実装

仕様が勧告候補段階に達すると、非実験的な実装が可能となり、実装者は仕様に正しく準拠していることを証明できるCRレベルの機能について、接頭辞なしの実装をリリースすべきです。

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

テストケースや実装報告書の提出方法など詳細はCSS作業グループWebサイトの https://www.w3.org/Style/CSS/Test/ を参照してください。 ご質問は public-css-testsuite@w3.org メーリングリストまで。

CR終了基準

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

独立
各実装は別々の開発者によって作成され、他の認定実装で使用されているコードを共有・再利用・派生してはなりません。本仕様の実装に影響のないコードはこの要件から除外されます。
相互運用可能
公式CSSテストスイートの該当テストケースに合格すること、またはWebブラウザでない場合は同等のテスト。該当するすべてのテストに同等のテストを作成する必要があります。相互運用性を主張するUAがある場合は、同様にその同等テストに合格できる追加のUAが必要です。同等テストはピアレビューのため公開されなければなりません。
実装
以下を満たすユーザーエージェント:
  1. 仕様を実装している。
  2. 一般公開されている。製品版または公開ベータ版、プレビューリリース、ナイトリービルドなども対象。未公開版の場合は、少なくとも1ヶ月間その機能を実装して安定性を示す必要があります。
  3. 実験的でない(テストスイート合格専用のバージョンや今後通常利用されないものは不可)。

本仕様は少なくとも6ヶ月間、勧告候補として維持されます。

索引

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

参照で定義された用語

参考文献

規定参考文献

[CSS-COLOR-4]
Tab Atkins Jr.; Chris Lilley. CSS Color Module Level 4. 2021年6月1日. WD. URL: https://www.w3.org/TR/css-color-4/
[CSS-COLOR-ADJUST-1]
Elika Etemad; 他. CSS Color Adjustment Module Level 1. 2021年6月16日. WD. URL: https://www.w3.org/TR/css-color-adjust-1/
[CSS-OVERFLOW-3]
David Baron; Elika Etemad; Florian Rivoal. CSS Overflow Module Level 3. 2021年12月2日. WD. URL: https://www.w3.org/TR/css-overflow-3/
[CSS-VALUES-3]
Tab Atkins Jr.; Elika Etemad. CSS Values and Units Module Level 3. 2019年6月6日. 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. 2021年10月16日. WD. URL: https://www.w3.org/TR/css-values-4/
[CSS2]
Bert Bos; 他. Cascading Style Sheets Level 2 Revision 1 (CSS 2.1) Specification. 2011年6月7日. REC. URL: https://www.w3.org/TR/CSS21/
[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

参考情報文献

[CSS-CASCADE-5]
Elika Etemad; Miriam Suzanne; Tab Atkins Jr.. CSS Cascading and Inheritance Level 5. 2021年10月15日. WD. URL: https://www.w3.org/TR/css-cascade-5/
[HTML]
Anne van Kesteren; 他. HTML Standard. Living Standard. URL: https://html.spec.whatwg.org/multipage/
[WCAG21]
Andrew Kirkpatrick; 他. Web Content Accessibility Guidelines (WCAG) 2.1. 2018年6月5日. REC. URL: https://www.w3.org/TR/WCAG21/

プロパティ索引

名前 初期値 対象 継承 %ages アニメーション型 正規順序 算出値
scrollbar-color auto | <color>{2} auto scroll containers yes n/a by computed value per grammar specified keyword or two computed colors
scrollbar-width auto | thin | none auto scroll containers no n/a by computed value per grammar specified keyword