CSS基本ユーザーインターフェイスモジュール レベル4

W3C ワーキングドラフト,

このドキュメントの詳細
このバージョン:
https://www.w3.org/TR/2026/WD-css-ui-4-20260120/
最新公開バージョン:
https://www.w3.org/TR/css-ui-4/
編集者草案:
https://drafts.csswg.org/css-ui-4/
以前のバージョン:
履歴:
https://www.w3.org/standards/history/css-ui-4/
実装レポート:
https://wpt.fyi/results/css/css-ui/
フィードバック:
CSSWGイシューリポジトリ
仕様内インライン
編集者:
Florian Rivoal (Bloombergを代表して)
Tab Atkins-Bittner (Google)
この仕様への編集提案:
GitHubエディター
テストスイート:
https://wpt.fyi/results/css/css-ui/

要約

この仕様は、HTML および XML(XHTML を含む)をスタイル設定するための、 ユーザーインターフェース関連のプロパティおよび値について記述する。 これは、以前の CSS レベルのプロパティおよび値に含まれる ユーザーインターフェース関連機能を包含し、拡張するものである。 さまざまなプロパティおよび値を使用して、 文書内の基本的なユーザーインターフェース要素をスタイル設定する。

CSS は、構造化文書 (HTML や XML など) を画面、紙面などにどのように描画するかを記述するための言語である。

この文書のステータス

この節では、この文書が公開された時点での状態について説明する。 現在の W3C 公開文書の一覧および この技術報告書の最新版は、 W3C 標準およびドラフトの索引に掲載されている。

この文書は CSS ワーキンググループによって、 勧告トラック を用いた ワーキングドラフトとして公開された。 ワーキングドラフトとしての公開は、 W3C およびそのメンバーによる承認を意味するものではない。

この文書はドラフトであり、 いつでも更新、置換、 あるいは他の文書によって廃止される可能性がある。 進行中の作業以外のものとしてこの文書を引用することは不適切である。

フィードバックは、 GitHub で issue を提出する方法(推奨)で送付してほしい。 その際、件名に仕様コード「css-ui」を含め、 次のように記載すること: 「[css-ui] …コメントの要約…」。 すべての issue およびコメントは アーカイブされる。 あるいは、(アーカイブされている) 公開メーリングリスト www-style@w3.org に送信してもよい。

この文書は、 2025 年 8 月 18 日版 W3C プロセス文書 によって管理されている。

この文書は、 W3C 特許ポリシー の下で運営されるグループによって作成された。 W3C は、当該グループの成果物に関連して行われた すべての特許開示の 公開一覧 を管理しており、 そのページには特許開示の手順も記載されている。 必須クレームを含むと信じる特許について 実際の知識を有する個人は、 W3C 特許ポリシー第 6 節 に従って情報を開示しなければならない。

この仕様は CSS Basic User Interface Module Level 3 を包含し、拡張するものである。 [CSS-UI-3]

次の機能はリスクあり(at-risk)とされており、CR 期間中に削除される可能性がある:

「at-risk」は W3C プロセスにおける専門用語であり、 必ずしもその機能が削除または遅延の危険にさらされていることを意味するものではない。 これは、ワーキンググループがその機能について、 相互運用可能な形で適時に実装されることが困難である可能性があると考えていることを意味し、 必要に応じて、提案勧告段階へ移行する際に、 その機能を含まない新たな候補勧告を公開することなく 当該機能を削除できるようにするためのものである。

1. はじめに

このモジュールは、著者がユーザーインターフェース関連のプロパティや値をスタイル設定できるようにする CSS プロパティについて説明する。

CSS1 第2.1節 [CSS1] および CSS2 第18章 [CSS21] では、 複数のユーザーインターフェース関連のプロパティと値が導入された。CSS3 のユーザーインターフェース(2000年2月16日)では、さらに新しいユーザーインターフェース関連の機能が導入された。

[CSS-UI-3] は、これらを統合、拡張、置き換えるために後に導入された。 本仕様書はこの作業を継続し、[CSS-UI-3] を置き換える。

1.1. 目的

本仕様書の目的は以下の目標を達成することである:

2. モジュール間の相互作用

本ドキュメントでは、以前の仕様には存在しなかった新機能を定義する。 また、これに加えて [CSS-UI-3] を置き換え、これを上書きする。 なお [CSS-UI-3] 自体は以下を置き換え、上書きしている:

注: box-sizing プロパティは以前、この仕様書の本節で定義されていたが、 CSS Sizing 3 § 3.3 Box Edges for Sizing: the box-sizing property に移動された。

注: text-overflow プロパティは以前、この仕様書の本節で定義されていたが、 CSS Overflow 3 § 5.1 Overflow Ellipsis: the text-overflow property に移動された。

2.1. 値の定義

本仕様書では、CSS プロパティ定義規則([CSS21])に従い、 値定義構文([CSS-VALUES-3])を用いて記述している。 本仕様書で定義されていない値タイプは、CSS Values & Units [CSS-VALUES-3] にて定義されている。 他の CSS モジュールと組み合わせることで、これらの値タイプの定義が拡張される場合がある。

プロパティ固有の値の定義に加えて、本仕様書で定義されるすべてのプロパティは、 CSS-wide キーワード をプロパティ値として受け入れる。 可読性のため、ここでは明示的に繰り返していない。

3. アウトラインプロパティ

スタイルシートの作成者は、ボタンやアクティブなフォームフィールド、イメージマップなどの 視覚オブジェクトの周囲にアウトラインを作成して目立たせたい場合がある。 アウトラインはボーダーとは以下の点で異なる:

  1. アウトラインはスペースを占有しない。
  2. アウトラインは要素の インクオーバーフロー領域 に寄与する。
  3. アウトラインは非矩形でもよい。
  4. ユーザーエージェントは、:focus-visible 状態の要素に対してアウトラインを描画することが多い。

アウトラインプロパティは、これらの動的アウトラインのスタイルを制御する。

アウトラインの描画の重なり順は、プラットフォームごとにより良いユーザー体験を提供できるよう、 実装に委ねられている。 これは CSS 2.1 付録E [CSS21] に定義された アウトラインの重なり順に代わる。

キーボードユーザー、特にページを他の方法で操作できない可能性のある障害者は、 :focus-visible 状態の要素で アウトラインが表示されることに依存している。 したがって、代替のハイライト機構を提供せずにアウトラインを非表示にしてはいけない。

アウトラインに変形を適用した場合の描画については明示的に未定義である。

3.1. アウトライン短縮表記:outline プロパティ

名前: outline
値: <'outline-width'> || <'outline-style'> || <'outline-color'>
初期値: 個別プロパティ参照
適用対象: すべての要素
継承: いいえ
パーセンテージ: 該当なし
計算値: 個別プロパティ参照
アニメーションタイプ: 個別プロパティ参照
標準順序: 文法に従う

outline プロパティは短縮表記プロパティであり、 outline-style、outline-width、 および outline-color の3つをまとめて設定する。 auto のみが指定された場合、 または auto が <'outline-width'> とともに指定され、 明示的な <'outline-style'> や <'outline-color'> がない場合、 outline-style と outline-color は両方とも auto に設定される。

注: 短縮表記では意図的に outline-offset プロパティを省略している。 このプロパティはアウトラインの位置を決定するものであり、見た目ではないため、 独立して継承させることができ、かつ互換性維持の理由もある。

アウトラインプロパティで作成されるアウトラインはボックスの「上」に描画される。 すなわち、アウトラインは常に最前面にあり、 ボックスや他のボックスの位置やサイズには影響しない。 したがって、アウトラインの表示や非表示によってリフローは発生しない。

アウトラインは非矩形でもよい。 例えば、要素が複数行に分割される場合、 アウトラインは要素のすべてのボックスを囲むアウトラインまたは最小セットのアウトラインとなる。

アウトラインの各部分は完全に接続されているべきであり、 一部の辺が開いた状態であってはならない (インライン要素のボーダーは行が分割されると開く場合がある)。

アウトラインの部分は矩形である必要はない。 アウトラインが ボーダーエッジ に従う場合、 border-radius 曲線や、 corner-shape にも従うべきである。

アウトラインの位置は子孫ボックスによって影響を受けることがある。

描画されたアウトラインの寸法は、要素の インクオーバーフロー領域 に寄与する。

ユーザーエージェントは、ユーザーにフォーカスの概念を適切に伝えるための領域を囲むアウトラインを決定するアルゴリズムを使用すべきである。

注: 本仕様書ではアウトラインの正確な位置や形状は定義していないが、通常はボーダーボックスの直外に描画される。

注: アウトラインはすべての辺で同じである。 ボーダーとは異なり、 outline-top、outline-left などのプロパティは存在しない。

本仕様書では、複数の重なったアウトラインの描画方法や、 他の要素の背後で部分的に隠れたボックスのアウトライン描画方法は定義していない。

BUTTON 要素の周囲に太いアウトラインを描画する例:
button { outline: thick solid }

グラフィカルユーザーインターフェースでは、要素の周囲にアウトラインを使用して ページ上でどの要素にフォーカスがあるかをユーザーに示すことがある。 これらのアウトラインはボーダーに加えて表示され、オン/オフ切り替えでも文書のリフローは発生しない。 フォーカスは文書内でのユーザー操作の対象である(例:テキスト入力やボタン選択)。

例えば、:focus-visible 状態の要素に太い黒線、:active 状態の要素に太い赤線を描画するには、以下のルールを使用できる:
:focus-visible  { outline: thick solid black }
:active { outline: thick solid red }

注: アウトラインはフォーマットに影響しない (ボックスモデル上のスペースを占有しない)ため、 ページ上の他の要素と重なることがある。

3.2. アウトラインの太さ:outline-width プロパティ

名前: outline-width
値: <line-width>
初期値: medium
適用対象: すべての要素
継承: いいえ
パーセンテージ: 該当なし
計算値: 絶対長さ、ボーダー幅としてスナップ
標準順序: 文法に従う
アニメーションタイプ: 計算値に基づく

outline-width プロパティは border-width と同じ値を受け入れ、 同じ意味を持つ(CSS Backgrounds 3 § 3.3 Line Thickness: the border-width properties)。

3.3. アウトラインのパターン: outline-style プロパティ

名前: outline-style
値: auto | <outline-line-style>
初期値: none
適用対象: 全ての要素
継承: いいえ
パーセンテージ: 該当なし
計算値: 指定されたキーワード
標準順序: 文法に従う
アニメーションタイプ: 計算値による

<outline-line-style> は <line-style> (CSS Backgrounds 3 § 3.2 線のパターン: border-style プロパティ) と同じ値を受け入れます。 hidden はアウトラインスタイルとしては使用できません。 さらに、outline-style プロパティは auto の値も受け入れます。

auto の値はユーザーエージェントが カスタムのアウトラインスタイルをレンダリングすることを許可します。 通常、このスタイルはプラットフォームのユーザーインターフェースのデフォルトであるか、 CSS では詳細に記述できない、リッチなスタイル(例えば、半透明の外側ピクセルで輝いて見える丸みを帯びたエッジのアウトライン)です。 ユーザーエージェントは、auto スタイルのアウトラインのレンダリングに対して outline-color プロパティで影響を与えることを可能にする場合がありますが、 この仕様ではレンダリングがどのように影響を受けるか(受けるとしても)を定義していません。 outline-width プロパティは outline-style が auto の場合は無視されます。 ユーザーエージェントは auto を solid として扱うことがあります。

3.4. アウトラインの色: outline-color プロパティ

名前: outline-color
値: auto | <'border-top-color'>
初期値: auto
適用対象: 全ての要素
継承: いいえ
パーセンテージ: 該当なし
計算値: 以下を参照
標準順序: 文法に従う
アニメーションタイプ: 計算値による

outline-color プロパティは <'border-top-color'> の全ての値を受け入れます。 また、次のキーワードも使用可能です:

auto
outline-style が auto の場合、 outline-color: auto は auto と計算され、 アクセントカラー を表します。

それ以外の場合、outline-color: auto は currentColor と計算されます。

CSS Color 4 § 14. <color> 値の計算方法 を <color> 値の算出値について参照してください。 また、CSS Images 4 § 4 1D 画像値: <image-1D> 型および stripes() 記法 は <image-1D> 値に関する計算値を示します。

この仕様の以前のバージョンでは、追加の invert 値が存在し、画面上のピクセルの色を反転させました。 現在はサポートされておらず、実装が存在しないため削除されました。 詳細は CSS User Interface 3 § 4.4 アウトラインの色: outline-color プロパティ を参照してください。

3.5. アウトラインのオフセット: outline-offset プロパティ

デフォルトでは、アウトラインは border edge のすぐ外側に描画されます。 しかし、アウトラインをオフセットして border edge より外側に描画することも可能です。

名前: outline-offset
値: <length>
初期値: 0
適用対象: 全ての要素
継承: いいえ
パーセンテージ: 該当なし
計算値: 絶対値
標準順序: 文法に従う
アニメーションタイプ: 計算値による

outline-offset の計算値が 0 以外の場合、 アウトラインはその分だけ border edge から外側に描画されます。

例えば、 フォーカスのアウトラインとフォーカスまたはアクティブな要素の間に 2 ピクセルのスペースを空けるには、 次のルールを使用します:
:focus,:active  { outline-offset: 2px }

負の値を指定した場合、アウトラインは ボーダーボックス内に縮小されます。 アウトラインで描画される形状の高さおよび幅は、 outline-width プロパティの計算値の 2 倍未満にならないようにします。 これにより、大きな負の値でもアウトラインを描画できます。 ユーザーエージェントはこの制約を各方向で独立して適用すべきです。 アウトラインが複数の分断された形状として描画される場合、 この制約は各形状に個別に適用されます。

4. リサイズ

CSS2.1は、ブロックコンテナ要素におけるスクロール機構(例:スクロールバー)の表示を制御する仕組みを提供します。 本仕様では、要素のユーザーによるリサイズ可能性を制御する仕組みや、テキストのオーバーフロー動作を指定する機能を追加します。

4.1. ボックスのリサイズ: resize プロパティ

resize プロパティは、要素をユーザーがリサイズ可能かどうか、また可能であればどの軸でリサイズできるかを指定できます。

名前: resize
値: none | both | horizontal | vertical | block | inline
初期値: none
適用対象: スクロールコンテナの要素および、画像・動画・iframeなどの置換要素
継承: いいえ
パーセンテージ: 該当なし
計算値: 指定されたキーワード
正規順序: 文法に従う
アニメーションタイプ: 離散
none
UAは要素にリサイズ機構を表示せず、ユーザーは直接操作で要素をリサイズできません。
both
UAは双方向リサイズ機構を表示し、ユーザーが要素の高さと幅の両方を調整できます。
horizontal
UAは水平方向リサイズ機構を表示し、ユーザーは幅のみ調整可能です。
vertical
UAは垂直方向リサイズ機構を表示し、ユーザーは高さのみ調整可能です。
block
UAはブロック軸方向リサイズ機構を表示し、ユーザーは要素のブロックサイズのみを調整できます。
inline
UAはインライン軸方向リサイズ機構を表示し、ユーザーは要素のインラインサイズのみを調整できます。

現在、要素上のスクロール機構の表示は overflow プロパティを使用して制御可能です(例:overflow: scroll と overflow: hidden 等)。 resize プロパティの目的は、要素上のリサイズ機構(例:リサイズボックスやウィジェット)の表示と機能を制御できるようにすることです。

注: リサイズ機構はスクロール機構とは異なり、 ズーム用のUA機構とは関係ありません。 スクロール機構は要素の内容のどの部分を表示するかを決定するのに対し、 リサイズ機構は要素のサイズを決定します。

resize プロパティは、スクロールコンテナの要素に適用されます。 UAは、overflow プロパティの値に関係なく、以下の要素にも適用可能です:

resize プロパティが生成コンテンツに及ぼす影響は未定義です。 実装では生成コンテンツに resize プロパティを適用すべきではありません。

注: 将来的に resize プロパティが CSSPseudoElementインターフェイスの実装により生成コンテンツに適用される可能性があります。

要素がユーザーによりリサイズされると、 UAは要素の width と height プロパティを、 要素の style属性 DOM 内で ユーザーが示したサイズの px 単位値に設定します。 既存のプロパティ宣言がある場合は置き換え、!important は使用されません。

要素が一方向のみリサイズされた場合、対応するプロパティのみが設定され、両方は設定されません。

リサイズの正確な方向(例:要素の左上を変更するか、右下を変更するか)は、 要素が絶対配置されているか、right および bottom プロパティの使用、 要素の言語が右から左かなど、多くのCSSレイアウト要因に依存します。 UAはリサイズ方向(CSSレイアウトによる決定)と、プラットフォームの慣習および制約を考慮して ユーザーへのリサイズ機構の提示方法を決定すべきです。

ユーザーエージェントは、min-width、 max-width、 min-height、 max-heightで課される制約以外の制限なしに、 ユーザーが要素をリサイズできるようにする必要があります。

注: ユーザーによる要素のリサイズが無視されたり上書きされるように見える場合があります。 例:!important のカスケード宣言により 要素の style属性 内の width と height が優先される場合など。

要素の resize プロパティの計算値の変更は、 ユーザーによるリサイズによって style属性 に加えられた変更をリセットしません。

例えば、iframeをスクロール可能かつリサイズ可能にするには、 以下のルールを使用できます:
iframe,object[type^="text/"], 
object[type$="+xml"],object[type="application/xml"] 
{ 
  overflow:auto; 
  resize:both; 
} 

5. ポインティングデバイスとキーボード

5.1. ポインターの相互作用

5.1.1. カーソルのスタイル指定: cursor プロパティ

名前: cursor
値: [<cursor-image>,]* <cursor-predefined>
初期値: auto
適用対象: 全要素
継承: はい
パーセンテージ: 該当なし
計算値: 指定通り。ただし相対URLは絶対URLに変換
正規順序: 文法に従う
アニメーションタイプ: 離散

このプロパティは、要素の border edge 内に カーソルのホットスポットがあるときに表示されるカーソルの種類を指定します。

注: CSS Backgrounds 3 § 4.1 Curve Radii: the border-radius properties に従い、border edge は border-radius の影響を受けます。

重なり合う要素の場合、どの要素がカーソルの種類を決定するかはヒットテストによります: カーソルを決定する要素は、この位置からクリックが発生した場合に クリックを受け取る要素です。

注: ヒットテストの詳細は本仕様の範囲外です。 ヒットテストは将来のCSSまたはHTMLの改訂で定義される予定です。

ユーザーエージェントは、スクロールバーやリサイズ用UI、その他のネイティブUIウィジェットの上では cursor プロパティを無視することがあります。 また、ページが応答していないときのビジー状態や、テキスト選択中のテキストカーソルなど、 UAのユーザーインターフェイス状態を示すために、独自のカーソルを表示する場合があります。

注: [HTML] は、イメージマップの特別扱いを cursor プロパティに定義しています。

値の意味は以下の通りです:

<cursor-image>
cursor プロパティの最初の(オプションの)構成要素は、画像ベースのカーソルのリストです。 UAがリストの最初のカーソルを扱えない場合、次のカーソルを試みます。 すべての作者指定カーソルが扱えない場合、リスト末尾のキーワードベースのカーソルを使用します。

<cursor-image> の構文は以下の通りです:

<cursor-image> = [ <url> | <url-set> ] <number>{2}?

UAは <url> または <url-set> で指定されたリソースからカーソルを取得します。 準拠するUAは、<url> および <url-set> の代わりに、 <image>(上位互換)をサポートすることがあります。

<url-set> は image-set() の制限版で、 <image> は <url> のみ使用可能です。

UAは以下の画像形式を必ずサポートする必要があります:

さらに、UAは以下の形式をサポートすべきです:

UAは追加のファイル形式もサポート可能で、自然サイズ がなくてもSVGを secure static mode または secure animated mode でサポートできます。

注: CSS WG は当初、すべてのSVGを必須サポートする予定でしたが、 実装不足のため、natural sizeなしのSVGは必須からオプションに変更されました。

注: 長年、デスクトップブラウザでは .ico と .cur ファイル形式のみがカーソルでサポートされていました。 現在はPNGやSVGが広くサポートされていますが、レガシー互換性のためUAはこれらもサポートすることが推奨されます。

デフォルトオブジェクトサイズ は UAのOS上の典型的なカーソルサイズに基づき定義されます。

具体的オブジェクトサイズ は デフォルトサイズ決定アルゴリズムで決定されます。 OSが指定サイズ以上のカーソルをレンダリングできない場合、 画像の 自然比率 を保持したまま縮小されます。

オプションの <number> のペアは、 画像内でポインタ位置(ホットスポット)の X, Y 座標を指定します。

注: さまざまな <image> の座標系の定義は [CSS4-IMAGES] に委ねられています。

値を省略すると、画像リソース自体の自然なホットスポットが使用されます。 自然なホットスポットがなければ左上隅 (0 0) が使用されます。

ホットスポットの座標が画像外の場合は、各座標を独立にクランプして画像内に収めます。

<cursor-predefined>
必須の <cursor-predefined> キーワードは、 事前定義されたカーソルまたは、<url>が指定され、そのどれも使用できない場合のフォールバックカーソルを示します。

<cursor-predefined> の完全なキーワードセットと意味については、§ 5.1.1.1 事前定義カーソルを参照してください。

以下は複数のカーソル値を使用する例です。
:link,:visited {
  cursor: url(example.svg),
    url(hyper.cur),
    url(hyper.png) 2 3,
    pointer
}

この例では、すべてのハイパーリンクに対して SVG 画像をカーソルとして指定しています。 読み込みに失敗した場合、次の "hyper.cur" を試し、さらに失敗した場合は "hyper.png" を使用します。 最後にすべての画像カーソルが使用できない場合、最後の値 pointer が使用されます。

5.1.1.1. 事前定義カーソル

<cursor-predefined> の生成規則は、ほとんどのオペレーティングシステムで利用可能な幅広い事前定義カーソルを含みます。 その構文は以下の通りです:

<cursor-predefined> = auto | default | none |
                context-menu | help | pointer | progress | wait |
                cell | crosshair | text | vertical-text |
                alias | copy | move | no-drop | not-allowed | grab | grabbing |
                e-resize | n-resize | ne-resize | nw-resize |
                s-resize | se-resize | sw-resize | w-resize |
                ew-resize | ns-resize | nesw-resize | nwse-resize |
                col-resize | row-resize |
                all-scroll |
                zoom-in | zoom-out

<cursor-predefined> のキーワードの意味と典型的な描画は以下の通りです:

汎用カーソル
auto
UAは現在の文脈に応じて表示するカーソルを決定します。auto は、選択可能なテキストや編集可能要素上では text と同様に振る舞い、 それ以外では default として振る舞います。
default
プラットフォーム依存のデフォルトカーソル。多くの場合、矢印として描画されます。
none
要素にカーソルを描画しません。
リンクとステータスカーソル
context-menu
カーソル下のオブジェクトにコンテキストメニューが利用可能であることを示します。 多くの場合、矢印と小さなメニュー風アイコンで描画されます。
help
カーソル下のオブジェクトにヘルプが利用可能であることを示します。 多くの場合、疑問符や吹き出しで描画されます。
pointer
リンクを示すポインターカーソルです。
progress
処理中であることを示しますが、waitとは異なり、ユーザーはまだ操作可能です。多くの場合、回転するビーチボールや矢印と時計・砂時計で描画されます。
wait
プログラムがビジー状態で、ユーザーが待つべきことを示します。 多くの場合、時計や砂時計で描画されます。
選択カーソル
cell
セルやセルのセットが選択可能であることを示します。多くの場合、中央に点のある太い十字で描画されます。
crosshair
単純な十字("+" 形)を示します。2次元ビットマップ選択モードを示す場合があります。
text
選択可能なテキストを示します。多くの場合、縦向きの I ビームで描画されます。縦書きテキストでは UA は自動的に水平 I ビーム/カーソル(vertical-text と同様)を表示する場合があります。
vertical-text
選択可能な縦書きテキストを示します。多くの場合、水平 I ビームで描画されます。
ドラッグ&ドロップカーソル
alias
エイリアスやショートカットの作成を示します。多くの場合、矢印と小さな曲がった矢印で描画されます。
copy
コピーを示します。多くの場合、矢印と小さなプラス記号で描画されます。
move
移動を示します。
no-drop
現在のカーソル位置にアイテムをドロップできないことを示します。多くの場合、手や矢印と小さな禁止マークで描画されます。
not-allowed
要求された操作が実行されないことを示します。多くの場合、禁止マーク(円に斜線)で描画されます。
grab
掴む(移動のためにドラッグ可能)ことを示します。多くの場合、開いた手の裏側で描画されます。
grabbing
掴んでいる(移動中)ことを示します。多くの場合、ほぼ閉じた手の裏側で描画されます。
サイズ変更・スクロールカーソル
e-resize
n-resize
ne-resize
nw-resize
s-resize
se-resize
sw-resize
w-resize
辺の移動を示します。例えば、se-resize は ボックスの南東の角からの移動に使用されます。
ew-resize
ns-resize
nesw-resize
nwse-resize
双方向のサイズ変更を示します。
col-resize
項目/列を水平方向にリサイズできることを示します。多くの場合、垂直バーで区切られた左右向きの矢印で描画されます。
row-resize
項目/行を垂直方向にリサイズできることを示します。多くの場合、水平バーで区切られた上下向きの矢印で描画されます。
all-scroll
任意方向にスクロール可能であることを示します。多くの場合、中央に点を置いた上下左右の矢印で描画されます。
ズーミングカーソル
zoom-in
zoom-out
拡大または縮小が可能であることを示します。多くの場合、虫眼鏡の中央に "+" または "-" が描かれたアイコンで表示されます。zoom-in と zoom-out に対応します。
5.1.1.2. キャンバスのカーソル

ドキュメントの キャンバス は、ドキュメントが描画される無限の表面です [CSS21]。 キャンバスに対応する要素が存在しないため、要素上にない場合のカーソルのスタイル指定を可能にするために、 キャンバスのカーソルはルート要素のカーソルを再利用します。 しかし、ルート要素のボックスが生成されない場合 (例えば、ルート要素に display: none が指定されている場合)、キャンバスのカーソルはプラットフォーム依存のデフォルトカーソルとなります。

注意: 要素が不可視でもボックスを生成する場合があります。例えば、 要素が visibility: hidden であっても、display: none でなければ、 その要素のボックスが生成され、キャンバスのカーソルとして使用されます。

5.2. 挿入キャレット

挿入キャレット(略して「キャレット」)は、 テキスト入力を受け付ける要素内の挿入ポイントを 視覚的に示すインジケータで、ユーザーがテキスト(および場合によってはその他のコンテンツ)を挿入できる場所を示します。 caret-color、caret-animation、および caret-shape プロパティは、 キャレットの見た目に関して著者がある程度制御できるようにします。

テキストまたは要素は、テキスト入力を受け付けると見なされます。これは、それが 編集可能要素 か、その子孫である場合に該当します。ただし、使用値 が user-select プロパティで none に設定されている要素や、 contentEditable 属性が false に設定されたHTML要素をルートとするサブツリーは除外されます。

一部のユーザーエージェントには、見た目が似た別のユーザーインターフェイス機構が存在し、時折「キャレット」と呼ばれることもあります。 例えば、一部のUAは「ナビゲーションキャレット」を表示でき、これは 挿入キャレット に似ていますが、編集不可テキスト内でも移動可能です。 caret-color、caret-animation、および caret-shape プロパティは、 これらの機構や 編集可能要素 以外には適用されることを意図していませんが、 UAが考慮することを選択する場合もあります。 適用の可否や範囲はユーザーエージェント次第です。

注意: cursor プロパティが auto の場合や、 cursor プロパティが text または vertical-text の要素上にカーソルを置いたときに表示されるカーソル画像は、 キャレットに似ていることがありますが、キャレットではありません(カーソルです)。

5.2.1. 挿入キャレットの色指定: caret-color プロパティ

名前: caret-color
値: auto | <color>
初期値: auto
適用対象: テキスト入力を受け付けるテキストまたは要素
継承: はい
パーセンテージ: 該当なし
計算値: auto の計算値は auto です。 <color> の値については CSS Color 4 §  14. <color> 値の解決 を参照してください。
標準順序: 文法に従う
アニメーションタイプ: 計算値による

このプロパティは 挿入キャレット の色を制御します。

auto
UAは currentColor を使用するべきです。 UAは キャレット の色を自動的に調整して、周囲のコンテンツとの視認性やコントラストを確保する場合があります。 これは currentColor、背景、影などに基づく場合があります。

注意: caret-shape が block の場合、 視認性とコントラストの確保は、currentColor 以外の、UAが決定した色を用いるのが最適です。

<color>
指定された色で キャレット が着色されます。
例: caret-color:#00aacc; を指定したテキストエリア

5.2.2. 挿入キャレットのアニメーション: caret-animation

名前: caret-animation
値: auto | manual
初期値: auto
適用対象: テキスト入力を受け付けるテキストまたは要素
継承: はい
パーセンテージ: 該当なし
計算値: 指定されたキーワード
標準順序: 文法に従う
アニメーションタイプ: 離散

ほとんどのプラットフォームおよびUAでは、挿入キャレット は点滅します。 このプロパティは著者がキャレットのアニメーション方法を制御することを可能にします。

auto
UAがキャレットをどのようにアニメーションさせるか(必要であれば)、およびその速度を決定します。 プラットフォームの規約や設定に従い、文脈に応じて調整されることがあります。

注意: 通常、点滅するキャレットとしてレンダリングされます。 点滅ではなくフェードイン・アウトするバリエーションが一部の環境に存在します。

manual
UAはキャレットをアニメーションさせてはいけません。

注意: これはUAによるキャレットのアニメーションに関するもので、CSSアニメーションでキャレットの色を変化させる場合は通常通り適用されます。

注意: [CSS3-ANIMATIONS] を用いたカスタムアニメーションを適用する際に、 キャレット が点滅・フェードしないよう caret-animation: manual を使うことが推奨されます。

注意: 詳細は ガイドライン 2.3: 発作: 発作を引き起こす可能性のあるコンテンツ設計を避ける [WCAG20] を参照してください。

点滅やフラッシュ表示に敏感なユーザーは、 すべてのキャレットを静的にして非点滅にすることができます。 ユーザースタイルシートで以下のルールを使用することで実現可能です。
/* キャレットの点滅/フラッシュを防ぐ */
:read-write { caret-animation: manual !important; }

/* キャレットカラーの変化、アニメーションも含めて防ぐ */
:read-write { caret-color: auto !important; }

編集可能なユーザースタイルシートを持たないUAは、点滅、フラッシュ、およびアニメーションキャレットを無効化する設定を提供すべきです。 編集可能なユーザースタイルシートを持つUAも、この設定を提供することが望ましいです。 詳細は [WCAG] ガイドライン 2.2 および ガイドライン 2.3 を参照してください。

通常、キャレットは点滅します。 これにより、2色が交互に表示されます。
textarea {
  caret-animation: manual;
  caret-color: blue;
  animation: caret-alternate 2s step-end infinite;
}
@keyframes caret-alternate {
  50% { caret-color: red; }
}

以下のシミュレーションレンダリングは期待される見た目を示しています。

キャレット色交互表示テキストエリア

下の要素にフォーカスすると、ブラウザでのレンダリングが確認できます。

キャレット色交互表示のテキストエリア
UAがキャレットのアニメーション制御をページ著者に譲らず、 caret-animation: manual を無視する場合は、 このプロパティを実装してはいけません。

注意: これにより、著者は @supports (caret-animation: manual) { … } を使って、この機能に依存するコードを条件付きで使用することができます。 詳細は [CSS-CONDITIONAL-3] を参照してください。

5.2.3. 挿入カーソルの形状: caret-shape

名前: caret-shape
値: auto | bar | block | underscore
初期値: auto
適用対象: テキストまたは テキスト入力を受け付ける要素
継承: はい
パーセンテージ: 該当なし
計算値: 指定されたキーワード
正規順序: 文法に従う
アニメーションタイプ: 計算値に従う

このプロパティにより、作者は挿入カーソルの希望する形状を指定できます。

この定義の文脈では、characterは拡張グラフェムクラスタとして理解されます。 定義は[UAX29]に準拠しています。 また、visible characterは、非ゼロ幅を持つ文字を意味します。

auto
UAがカーソルの形状を決定します。 プラットフォームの慣習に一致させるべきで、文脈に応じて調整される場合があります。 例えば、ユーザーがキーボードのinsertキーを押した際にUAが挿入モードと上書きモードを切り替える場合、 挿入モードではbar カーソルを、 上書きモードではblock カーソルを表示することがあります。
bar
UAは挿入カーソルを細いバーとして挿入ポイントに表示しなければなりません。 これは文字の間、前、または後ろに配置され、文字の上に重なることはありません。 インラインの進行方向に垂直に配置すべきですが、 UAはイタリックや傾斜テキスト挿入時に傾けて表示することがあります。
block
UAは挿入カーソルを矩形として表示し、挿入ポイントの次の可視文字と重ねます。 挿入ポイントの後に可視文字がない場合、 最後の可視文字の後にカーソルを表示します。 UAはイタリックや傾斜テキスト挿入時に傾けた矩形で表示することがあります。
underscore
UAは挿入カーソルを細い線として挿入ポイントの次の可視文字の下側に表示します(定義は[CSS-WRITING-MODES-3]参照)。 挿入ポイントの後に次の可視文字がない場合、 最後の可視文字の後にカーソルを表示します。

blockおよびunderscore カーソルの幅は、 挿入ポイントの次の可視文字の進行幅にするべきです。 次の可視文字がない場合や、情報を取得するのが困難な場合は 1chに設定します。

カーソルの向きと外観を決定する際、 UAは書字モード [CSS-WRITING-MODES-3]を考慮し、[CSS-TRANSFORMS-1]の変形を適用する必要があります。 例えば、SVGのtextPath要素を使ってパス上にテキストが配置されている場合も考慮すべきです。

barおよびunderscore カーソルの太さは、 auto カーソルの類似表現と同様に、UAによって決定されます。 実用的な場合、UAは変形などで縮小されてもカーソルが視認できる太さを選択すべきです。

行末にカーソルを表示するのに十分なスペースがない場合でも、UAはカーソルを表示するべきです。 この場合、スクロール可能なオーバーフロー領域の境界を越えて描画される場合があります。 UAは必要に応じて制限し、クリップすることもできます。 また、見えなくなる場合にカーソルをスクロールポート内に表示するため、視覚的に再配置することもできます。

カーソルの重なり位置は以下の制約内で未定義です:

以下は各種カーソル形状の典型的な表示例です。 下のサンプルレンダリングでは、挿入ポイントは文字 u と m の間にあります。
caret-shape サンプル表示 ブラウザでの表示
(各セルをフォーカスしてカーソルを確認)
bar Lorem ipsu​m Lorem Ipsum
block Lorem ipsum Lorem Ipsum
underscore Lorem ispum Lorem Ipsum
underscore または block カーソルは、ターミナルやコマンドラインで一般的に使用されます。 以下の例のように使用されます。
.console {
  caret-shape: underscore;
  background: black;
  color: white;
  font-family: monospace;
  padding: 1ex;
}

以下のシミュレーション表示は、このように見えることを示しています。

user@host:css-ui-4 $ ls -a
. .. Overview.bs Overview.html
user@host:css-ui-4 $  

下の要素をフォーカスして、ブラウザでの表示を確認できます。

user@host:css-ui-4 $ ls -a
. .. Overview.bs Overview.html
user@host:css-ui-4 $ 

5.2.4. 挿入カーソルのショートハンド: caret

名前: caret
値: <'caret-color'> || <'caret-animation'> || <'caret-shape'>
初期値: auto
適用対象: テキストまたは テキスト入力を受け付ける要素
継承: はい
パーセンテージ: 該当なし
計算値: 個々のプロパティを参照
アニメーションタイプ: 個々のプロパティを参照
正規順序: 文法に従う

このプロパティは caret-color、caret-animation、および caret-shape を1つの宣言で設定するショートハンドです。 省略された値は初期値に設定されます。

以下の例は、各種カーソル関連プロパティを組み合わせて使用する例です。 古い蛍光表示のコンピュータモニター上のカーソル表示をシミュレートしています。
#old-screen {
  caret: block manual;
  animation: old-caret 2s infinite;
  /* 画面のスタイルは省略 */
}
@keyframes old-caret {
  from, 50% { caret-color: green; }
  75%, to { caret-color: transparent; }
}

以下のシミュレーション表示は、このように見えることを示しています。

>

下の要素をフォーカスして、ブラウザでの表示を確認できます。

>

5.3. キーボード制御

名前: nav-up, nav-right, nav-down, nav-left
値: auto | <id> [ current | root | <target-name> ]?
初期値: auto
適用対象: すべての有効な要素
継承: いいえ
パーセンテージ: 該当なし
計算値: 指定された通り
正規順序: 文法に従う
アニメーションタイプ: 離散
auto
ユーザーエージェントは、方向キー入力に応じてフォーカスを移動させる要素を自動的に決定します。
<id>
<id> 値は ID セレクタです [SELECT]。 プロパティに対応する方向キー入力に応じて、 フォーカスはセレクタに一致するツリー順序上最初の要素に移動します。

現在フォーカスされている要素を指定した場合、 nav- プロパティに対応する方向キー入力は無視されます — 同じ要素に再フォーカスする必要はありません。

セレクタに一致する要素がない場合、 ユーザーエージェントはフォーカスを移動させる要素を自動的に決定します。

他にフォーカス可能でない要素にフォーカスが移動する場合、 その要素はこの方向キー操作によってのみフォーカス可能となり、 :focus 疑似クラスはフォーカスされている間に一致します。

注意: この「フォーカス可能でない要素」に対して、 ドキュメントツリー内の次のフォーカス可能な要素にフォーカスを移動させるなど、 他のオプションも検討されました。 実装経験や作者の使用経験に基づく意見が歓迎されます。

<target-name>
<target-name> パラメータはフォーカス移動の対象フレームを示します。 <string> であり、 "_" で始まる文字列は使用できません。 エラー処理: "_" で始まる場合、"_parent" は親フレームに移動、 "_root" は root として扱われ、 他の値はその名前のフレームが存在すれば移動します。 指定したフレームが存在しない場合、 パラメータは current と見なされ、 要素が存在するフレーム内を使用します。 キーワード root は UA が全ウィンドウを対象とすることを示します。

方向キーを持つデバイス向けユーザーエージェントは、 それぞれ nav-* プロパティ(nav-up, nav-right, nav-down, nav-left) に従ってフォーカスを移動させます。 本仕様では、どのキーが方向キーかは定義していません。

注意: 通常のパソコンには 4 方向の矢印キーがあります。 これらのキーを方向キーとして使用するのが一例です。 アクセシビリティとユーザー利便性のため、 UA はどのキーを方向キーとして使用するかを設定できるようにすべきです。

5.3.1.1. 例: ボタンの配置

菱形に配置されたボタンの例です。 方向キー入力時にフォーカスが菱形を時計回り(または反時計回り)に移動するよう nav-* を設定しています。

button { position:absolute }

button#b1 {
  top:0; left:50%;
  nav-right:#b2; nav-left:#b4;
  nav-down:#b2; nav-up:#b4;
}

button#b2 { 
  top:50%; left:100%;
  nav-right:#b3; nav-left:#b1;
  nav-down:#b3; nav-up:#b1;
}

button#b3 { 
  top:100%; left:50%;
  nav-right:#b4; nav-left:#b2;
  nav-down:#b4; nav-up:#b2;
}

button#b4 { 
  top:50%; left:0;
  nav-right:#b1; nav-left:#b3;
  nav-down:#b1; nav-up:#b3;
}

ボタンのマークアップ順序はこの例では無関係ですが、 配置に基づく適切なフォーカス移動を確保することが重要です。

5.3.1.2. 例: フレーム内へのフォーカス移動

特定のフレーム内の要素にフォーカスを移動させるには、 要素の id とフレーム名の両方が必要です。

この例では、id="foo" のボタンから左方向に移動すると、 フレーム名 "sidebar" 内の id="bar" の要素にフォーカスが移動します。

button#foo { nav-left: #bar "sidebar"; }

5.3.2. 廃止: ime-mode プロパティ

ime-mode は一部ブラウザで実装されている問題のあるプロパティで、 本仕様および前身の [CSS-UI-3] により正式に廃止されています。

ユーザーエージェントは ime-mode プロパティをサポートしてはいけません。

作者は ime-mode プロパティを使用してはいけません。

ユーザーは、悪質なサイトや古い実装に対応する場合にのみ 修正目的で使用できます。 例えば以下のユーザースタイルシートのルールなどです:

ユーザー設定例
input[type=password] {  ime-mode: auto !important; }

この CSS はユーザースタイルシートに配置して、パスワード入力欄を標準動作に強制できます。

本仕様では意図的に、古い ime-mode 実装の動作やサポート内容を文書化していません。 そのような方法を推奨したり追求することは適切ではないためです。

注意: 以下の [HTML5] 機能を使用して、ユーザーがより良い入力体験を得られる情報を提供できます:

6. ユーザーインタラクション

6.1. コンテンツ選択の制御

user-select プロパティは、文書内でユーザーがどの要素をどのように選択できるかを指定するためのものです。 これにより、すべての要素が等しく選択に適していない場合でも、操作を容易にし、 隣接するコンテンツの誤選択を避けることができます。

名前: user-select
値: auto | text | none | contain | all
初期値: auto
適用対象: すべての要素、およびオプションで ::before および ::after 疑似要素
継承: なし
パーセンテージ: 該当なし
計算値: 指定されたキーワード
正規順序: 文法に従う
アニメーションタイプ: 離散

ユーザーエージェントは user-select プロパティを ::first-line および ::first-letter 疑似要素に適用してはなりません。

注: UA は、このプロパティを ::before および ::after 疑似要素に適用する場合があります。 その場合、auto 値はこれらの疑似要素では used value として none にマッピングされますが、他の値も指定可能です。 これにより、生成されたコンテンツが選択またはコピーできない従来の動作が保持されます。 ただし、このプロパティにより、内容の一部を生成するために使用される場合には 選択およびコピーが可能になります。 可能な限り、著者は生成コンテンツを装飾目的以外に使用することを避け、 コンテンツはすべて DOM に含めることを推奨します。 この機能はリスクがあります。

user-selectを none以外の値に変更できるようにする場合、 これがコピー可能性やDOM APIに何を意味するかを検討する必要があります。

擬似要素内の生成コンテンツがこの仕組みで選択可能になる場合、 UAはこのコンテンツを検索機能で見つけられるようにする必要があります。

これを::markerやページマージンボックスにも適用すべきでしょうか? used valueとしてautoもnoneにするべきでしょうか、 それともtextの方が適切でしょうか?

used valueはcomputed valueと同じですが、次の場合を除きます:

  1. editable elementの場合、 used valueは常にcontainとなり、 computed valueは関係ありません。
  2. computed valueがautoの場合、 used valueは以下で定義された他の値のいずれかになります。

この仕様において、editable elementとは、 editing hostまたは テキストを持つmutableなフォームコントロールのいずれかであり、 例えば textareaのようなものです。

editing hostの子孫であるeditable elementにおけるused valueの取り扱いに 制約を設けるべきでしょうか? セマンティクスは明確ではありません。 noneをtextにマップすべきか、 それとも全ての値をtextにマップすべきかもしれません。

auto
auto の used valueは以下の通り決定されます:

Note: この非継承プロパティで初期値がautoの組み合わせは、親要素に依存してused valueが決まるため、 事実上の選択的継承を作ることが可能です。 これはMicrosoftがIEで提案したもので、継承に似た動作を導入するためですが、contain値は継承されません。

text
要素は選択に制約を課しません。
none
UAはこの要素内で選択を開始できないようにする必要があります。

要素外で開始された選択は、この要素内で終了できません。 ユーザーがそのような選択を試みた場合、UAは代わりに要素境界で選択範囲を終了させる必要があります。

Note: 現時点では実験的実装はすべてこの通りではありません。 Firefoxはこの通りです。 ChromeやSafariはほぼこの通りですが、要素後で開始された選択が逆方向に要素に入る場合はここで指定された通りに動作しますが、 要素前で開始され要素に入ろうとする場合、要素を全て選択するallのように動作します。 IEは要素外で開始された選択が要素内に入ることを制限しません。 また、ChromeとSafariでは、user-select: none内で選択を開始し、外で終了させようとした場合、 選択は要素境界からユーザー指定の終了点まで作成されます。 FirefoxとIEは仕様通り動作し、選択を作成しません。

ただし、この要素にuser-select の used valueがnoneでない子孫がある場合、 これらの子孫内で開始・終了する選択は許可されます。

UAはこの要素をまたいだ選択を許可し、この要素自体は除外する必要があります。 複数範囲選択に対応していないUAはこの要素を含めても構いません。 もしこの要素にuser-select の used valueがnoneでない子孫がある場合、 これらの子孫は要素をまたいだ選択に含まれる必要があります。この仕様はクリップボードの動作について規範的要求は行いません。 しかし、UAは視覚的な選択がコピーされる内容と一致するようにすることが推奨されます。 選択されていないように見えるテキストをコピーしたり、その逆はユーザーにとって非常に混乱します。

user-selectがnoneの要素内で選択を開始しようとしても、 既存の選択が解除されたり影響を受けたりしてはいけません。

user-selectはUIの利便性のための仕組みであり、コピー防止機能ではないため、 user-selectがnoneの場合でも、 UAはユーザーが明示的にテキストを選択できる別の方法を提供してよいです。

Note: noneはコピー防止機能ではなく、 コピー防止目的で使用しても効果はありません。 UAは回避手段を提供でき、サポートしていない旧式のUAには影響せず、 ユーザーはユーザースタイルシート等で無効化できます。 noneは、著者が選択に役立たないUI要素の選択を無効にすることで、 ユーザーが必要なコンテンツを選びやすくするためのものです。 CSSバリデータ、リンター、ブラウザ内開発者ツールなどは、誤用や悪用を検出し、 ユーザビリティを損なう使用や一般的な期待に反する使用に対して警告するヒューリスティックの使用が推奨されます。

著者はユーザーを不必要に制約しないよう注意する必要があります。 例えば、ルート要素にuser-select: noneを設定し、 一部の著者が選択可能と判断した要素だけで制限を緩和すると、ユーザーにとってストレスになります:
  • 空白領域をクリックして現在の選択を解除できなくなる

  • 選択可能にすべき領域を著者が見落としている場合がある

  • 後からページに追加された領域が選択可能にされていない場合がある

  • ユーザーはメインコンテンツ以外のテキストを辞書や翻訳ツールで調べたり、検索エンジンで警告やエラーを探したりしたい場合がある…

代わりに、著者はより意図された操作を妨げる可能性がある要素にのみ user-select: noneを選択 的に適用するのが良いでしょう。 選択される可能性の低い部分を選択可能なままにしておく方が、ユーザーのフラストレーションは少なくなります。

contain
UAはこの要素内で開始された選択が要素外に拡張されないようにする必要があります。

要素外で開始された選択は、この要素内で終了できません。 ユーザーがそのような選択を試みた場合、UAは代わりに要素境界で選択範囲を終了させる必要があります。

UAはこの要素をまたいだ選択を許可し、この要素の内容を含める必要があります。

Note: 現時点では、実験的実装は異なる挙動を示します。 textareaやcontenteditable要素への選択を試すことで、containを明示的にサポートしないブラウザでも確認できます。

Note: これはInternet Explorerで実験的に導入され、 user-select: elementとして知られていました。

all
要素の内容は原子的に選択されなければなりません:部分的に選択される場合、要素全体とその子孫を含める必要があります。 要素が選択され、親のuser-selectのused valueがallの場合、親も再帰的に選択に含める必要があります。

この要素にuser-select の used valueがallでない子孫があり、 選択が完全にその子孫内にある場合、選択はこの要素全体に拡張されません。

注: 選択範囲にはテキスト以外も含まれることがあり、画像、表、動画などにも拡張される場合があります。 このような選択範囲のコピーや貼り付け時の動作は、本仕様の対象外です。

HTML向けUAスタイルシートには以下の追加が行われます:

button, meter, progress, select { user-select: none; }

上記のリストは不完全であり、少なくとも inputのボタン類のバリアントも含める必要があります。

レガシーコンテンツとの互換性のため、user-selectをサポートするUAは、エイリアスとして -webkit-user-selectもサポートする必要があります。

注: エイリアス機構の詳細はUAに委ねられています。 -webkit-user-selectをuser-selectのショートハンドプロパティにする方法は効果的であることが知られており、新規実装者はこれを検討すべきです。 しかし、-webkit-user-selectを他の方法でuser-selectのエイリアスとしてサポートするUAも存在し、互換性に悪影響はありません。 したがって、本仕様では柔軟性が認められています。

6.2. ヒットテストからの除外: pointer-events プロパティ

このプロパティはヒットテストの通常の動作を変更しますが、 この通常のヒットテスト自体は現時点で仕様化されていません。 明白な部分については広く相互運用性が確認されていますが、無数の微妙なケースや隅のケースがあり、 詳細な仕様化により大きな恩恵が得られます。 CSS-WGは、このような仕様作成への協力を非常に歓迎します。

名前: pointer-events
値: auto | none
初期値: auto
適用対象: すべての要素
継承: はい
パーセンテージ: 該当なし
計算値: 指定されたキーワード
正規順序: 文法に従う
アニメーションタイプ: 計算値の型に従う

pointer-events プロパティは、要素のボックスがポイント型ポインターイベントのターゲットになれるかどうかを定義します。 値の意味は以下の通りです:

auto
ヒットテストは通常通り行われます。
none
ヒットテストは、要素によって生成されるボックス ([CSS-DISPLAY-3]参照)が存在しないかのように扱われます。 これにより、pointer-events: noneの背後にある要素が ヒットテスト対象として認識されます。

上記の記述には条件付けが必要です。 一部の操作においては、ヒットテストは引き続き要素を考慮します。 例えば、クリック&ドラッグによるテキスト選択は通常通り動作します。 pointer-eventsによって影響を受ける対象は具体的に何か、明確化が必要です。

pointer-events: noneは 順次フォーカス移動を阻害しません。

注: この pointer-events: none は 要素自身のみをヒットテストから除外します。 サブツリー全体は除外されません。 このプロパティは継承により子孫に伝播しますが、 pointer-events: auto を pointer-events: noneの子孫に指定すると、 その要素は通常通りヒットテストに参加します。

注: pointer-events: none の要素の子孫である pointer-events: auto の要素をターゲットとしたイベントは、 バブリングまたはキャプチャリングフェーズ中に pointer-events: noneの祖先でも イベントハンドラでキャッチされることがあります (DOM § 2 Events参照)。

注: SVG 2 § 15.6 ‘pointer-events’ プロパティでは、 SVG要素向けのより多くの値を持つバリエーションが定義されています。 これらの値をSVG以外で使用した場合の効果は現時点で定義されていません。

6.3. すべての操作を防止: interactivity プロパティ

名前: interactivity
値: auto | inert
初期値: auto
適用対象: すべての要素
継承: はい
パーセンテージ: 該当なし
計算値: 指定通り
正規順序: 文法に従う
アニメーションタイプ: 離散

interactivity プロパティは、要素およびその フラットツリー の子孫 (テキストノードを含む)が inert かどうかを指定します。

auto

要素の inert性 は ホスト言語 によって決定されます。(通常は、この場合要素は inert ではないことを意味します。)

inert

要素は inert です。

要素 または テキストノード が inert の場合:

ユーザーエージェントは、ユーザーがページ内検索やテキスト選択の制限を上書きできるようにする場合があります。

注: このプロパティは、作者が要素を inert に強制できますが、 要素を *非* inert にすることはできません。inert性はホスト言語に委ねられます。 例えば、HTMLではモーダルダイアログが表示されている間、ページの残り部分は自動的に inert にされます。 このプロパティの値に関わらず適用されます。 一般に、ホスト言語はCSSが直接アクセスできる以上の情報を用いて、ユーザーにとって最適なinert性の動作を決定できます。

注: inert ノードは通常フォーカスできず、 ユーザーエージェントはinertノードをアクセシビリティAPIや支援技術に公開しません。 inertサブツリーには、ページの理解や操作に不可欠なコンテンツやコントロールを含めるべきではありません。 inertサブツリーのコンテンツはすべてのユーザーに認識されず、操作もできません。 作者は、表示される内容も視覚的に隠されている場合にのみ、要素をinertに指定すべきです。 ほとんどの場合、個別のフォームコントロールにinert属性を指定すべきではありません。 その場合、disabled 属性の方が適切です。

以下をHTMLスタイルシートに挿入すると、トップレベルのモーダルダイアログがデフォルトで非inertになります:
[inert] {
  interactivity: inert;
}
dialog:modal {
  interactivity: auto;
}

上記の dialog:modal セレクターは、デフォルトでinert状態から外れる他の要素にも拡張する必要があります。

6.4. ユーザー関心遅延: interest-delay-* プロパティ

名前: interest-delay-start, interest-delay-end
値: normal | <time>
初期値: normal
適用対象: すべての要素
継承: はい
パーセンテージ: 該当なし
計算値: キーワード normal または計算済みの時間
正規順序: 文法に従う
アニメーションタイプ: 計算値の型に従う
名前: interest-delay
値: <'interest-delay-start'>{1,2}
初期値: 個別プロパティ参照
適用対象: 個別プロパティ参照
継承: 個別プロパティ参照
パーセンテージ: 個別プロパティ参照
計算値: 個別プロパティ参照
アニメーションタイプ: 個別プロパティ参照
正規順序: 文法に従う

一部の ホスト言語 の機能は、ユーザーが要素に「関心」を示したときに有効化されることがあります。 具体的に何を意味するかは ホスト言語 および ユーザーエージェント に依存します(例: HTMLの interestfor 属性)。 しかし、こうした機能の共通点は、「関心」は即座に得たり失ったりしないことです。

例えば、「関心」はカーソルを要素にホバーさせることで示される場合、ページ上でカーソルを素早く通過させただけで「関心」が示されたとみなされないようにすべきです。 そうしないと、ユーザーが関係のない操作をしている間にUIが不意に表示されたり消えたりして混乱を招く可能性があります。

同様に、一度関心が示された場合も、少なくともデフォルトでは即座に「関心を失う」べきではありません。 例えば、ユーザーがリンクにホバーして子ポップアップリストが表示された場合、リンクからリストへカーソルを移動する際に一時的に両方の要素を離れることがありますが、その間にリストが「関心を失った」とみなされて閉じるべきではありません。

interest-delay ショートハンドおよび interest-delay-start、 interest-delay-end ロングハンドを使用すると、 指定された要素の機能に対して 関心開始遅延 および 関心終了遅延 を制御できます。 使用可能な値は次の通りです:

normal

関心開始遅延 および/または 関心終了遅延 はユーザーエージェント定義です。 プラットフォームの慣習に合わせて選択できます。

これらの遅延は ゼロにすべきではありません。 遅延は互いに異なる場合があり、ユーザーの関心の示し方によって変わることがあります。 (例えば、ホバーと長押しでは関心の示し方に応じて異なる遅延が用いられるかもしれません。)

<time>

関心開始遅延 および/または 関心終了遅延 を指定された期間に設定します。

interest-delay ショートハンドは、 interest-delay-start に最初の値を、 interest-delay-end に2番目の値を(値が1つしかない場合は最初の値を)設定します。

注: 将来的には、これらのプロパティの構文が拡張され、 機能やユーザーの関心の示し方に応じて遅延をカスタマイズできるようになる可能性があります。 (例えば、ホバーと長押しで異なる遅延を指定するなど。)

7. ウィジェットのスタイリング

7.1. ウィジェットのアクセントカラー: accent-color プロパティ

名前: accent-color
値: auto | <color>
初期値: auto
適用対象: すべての要素
継承: はい
パーセンテージ: 該当なし
計算値: キーワード auto または計算済みカラー
正規順序: 文法に従う
アニメーションタイプ: 計算値の型に従う

各プラットフォームのユーザーインターフェースコントロールは、通常、統一されたビジュアルスタイルの一部として設計されています。 多くのプラットフォームでは(すべてではありませんが)、そのビジュアルスタイルには アクセントカラー が含まれます。 アクセントカラーは通常明るく、背景や前景の実用的な色と強く対比します。 すべてのコントロールがすべての状態でアクセントカラーを使用するわけではありませんが、 それでもコントロールのカラースキームの中核部分です。

accent-color CSSプロパティを使用すると、 要素によって生成されるユーザーインターフェースコントロールの アクセントカラー を作者が指定できます。 値の意味は次の通りです:

auto
プラットフォームが選択した色を表します。可能であれば、プラットフォームの アクセントカラー と一致させるべきです。
<color>
指定された色を アクセントカラー として使用します。

ユーザーエージェントは、指定された accent-color を使用して、 本来アクセントカラーでスタイル指定されるはずだった要素の部分を描画すべきです。 コントロールの可読性を確保するためにコントラストを保持しなければなりません。そのため、 色の輝度や明るさを調整したり、コントロール内の他の部分で色を置き換えたりすることがあります (例: オーバーレイされたグリフの色を color から background-color に切り替えるなど)。 また、グラデーションなどのために色のバリエーションを生成し、 プラットフォームのアクセントカラー使用規約に合わせることもあります。

ラジオボタンは通常、円形で構成され、 チェック状態を表す「ドット」が重ねられることがあります。 一部のビジュアルスタイルでは、チェック状態に アクセントカラー を使用します: その中には円の背景に使用するものや、前景に使用するものがあります。

いずれの場合も、accent-color プロパティが コントロールの影響を受ける部分のスタイルを制御します。 ラジオボタンにアクセントカラーを使用しないビジュアルスタイルでは、 accent-color は効果を持ちません。

以下は、青色の accent-color で描画されたラジオボタンの例です:

プラットフォーム サンプル 備考
Firefox 79 / Win Unchecked: white-filled black-stroked circle. Checked: white-filled black-stroked circle with a filled black circle inside. アクセントカラーは使用されていません。
Chrome 81 / Win Unchecked: light gray shaded circular bubble. Checked: light gray shaded circular bubble overlaid with a dark grey circle. アクセントカラーは使用されていません。
Safari / Snow Leopard Unchecked: uncolored 3D-looking glassy bubble. Checked: light blue 3D-looking glassy bubble overlaid with a small black dot. チェック状態の背景グラデーションにアクセントカラーが使用されています。
Safari 13 / Mac / Light Unchecked: light gray inset-shadowed circle. Checked: bright blue filled circle overlaid with a small, drop-shadowed white dot. チェック状態の前景にアクセントカラーが使用されています。
Safari 13 / Mac / Dark Unchecked: dark gray circle shaded to look embossed but with a convex surface. Checked: bright blue filled circle shaded to look embossed, overlaid with a small white dot. チェック状態の前景にアクセントカラーが使用されています。
Chrome 83 / Win / Light Unchecked: dark gray empty circle. Checked: bright blue stroked circle overlaid with concentric bright blue filled circle. チェック状態の前景にアクセントカラーが使用されています。
Chrome 83 / Win / Dark Unchecked: light gray circle filled with dark gray. Checked: bright powder-blue stroked circle overlaid with concentric powder-blue filled circle. チェック状態の前景にアクセントカラーが使用され、ダークモード背景に合わせてコントラスト調整されています。

指定された色が部分的または完全に透明な場合、ユーザーエージェントはまずそれを Canvas システムカラーの上に合成し、 その結果得られた不透明色をアクセントカラーとして使用する必要があります。

注: ユーザー設定によって異なる場合がありますが、Canvas は、ライトカラースキームでは通常白、ダークカラースキームでは黒です。

7.2. 外観の切り替え: appearance プロパティ

名前: appearance
値: none | auto | base | base-select | <compat-auto> | <compat-special>
初期値: none
適用対象: すべての要素
継承: いいえ
パーセンテージ: 該当なし
計算値: 指定されたキーワード
正規順序: 文法に従う
アニメーションタイプ: 離散

ほとんどの文書内要素の見た目は CSS で完全に制御できますが、ウィジェットは通常、ユーザーエージェントがホスト OS のネイティブ UI コントロールを使用して描画するため、 CSS で再現したりスタイルを変更したりすることはできません。

この仕様書における ウィジェット という用語は、 置換要素 のうち ネイティブ表示 を持つものを指します。 つまり、これらはホスト OS やプラットフォームの類似するネイティブウィジェットやコントロールのように描画されるか、 CSS では表現できない見た目で描画されます。 どの要素が ネイティブ表示 を持つかは、 ホスト言語(例えば HTML [HTML])が定義します。

この仕様書では、この振る舞いをある程度制御するための appearance プロパティを導入しています。 特に、appearance: none を使用すると、 ウィジェット の ネイティブ表示 を抑制でき、 CSS で再スタイルできる プリミティブ表示 を持つようになります。

appearance: base を使用すると、ウィジェット に base appearance(基本外観) が与えられます。ウィジェット は base appearance の場合、 CSS で再スタイル可能な箇所では ネイティブ外観 が抑制され、 primitive appearance(プリミティブ外観) と同様ですが、 デフォルトスタイルも持ち、使用可能かつ互換性があります。これは、primitive appearance が 一部の ウィジェット を完全に消してしまう可能性がある点とは異なります。

ウィジェットにはスタイルシートが関連付けられている場合があり、基本表示 の有無によってスタイルが変化することがあります。ネイティブ表示 と プリミティブ表示 は同じスタイルを持つべきです。

appearance:base は、そのスタイルシートが HTML 仕様で完全に定義され、すべての HTML フォームコントロールに対して適切に実装されるまで、出荷準備が整っていません。

この機能の歴史に関する注記

以前はほとんどのブラウザでプレフィックス付きで存在していました。 標準化前は、none に加え、 要素の見た目の全パターンを列挙した非常に長い値のリストがあり、 各値がフォームコントロールの特定の見た目を与える責任を持っていました。 このリストはブラウザごとに異なっていました。

CSS ワーキンググループは、これは標準化には不適切であると結論付けました。 一部の値は他のブラウザにはない疑似要素に適用されるためであり、 フォーム要素を構築する方法が異なるためです。 このため標準化すべきではなく、異なるプラットフォームでフォームコントロールの見た目を大きく変える能力は維持されるべきです。

また、任意の要素(フォームコントロールを含む)を任意のフォームコントロールに変換できる能力は、むしろ欠点と見なされます。

代わりに、指定される設計は「auto」値でフォームコントロールが必要な見た目になるようにし、 「none」値で ネイティブ表示 を抑制するシンプルな設計です。

しかし、これだけではウェブ互換性が不十分であることが証拠として示されています。 例として以下のような使用法があります:

input { appearance: none; }
input[type=checkbox] { appearance: checkbox; }

ここで示した設計は、none | auto モデルの単純さを維持しつつ、 既存コンテンツとの互換性も考慮した妥協案です。

互換性に必要なキーワードの正確なリストとその振る舞いは、 将来の仕様バージョンで既存コンテンツとの互換性向上のために調整される可能性があります。 CSS-WG は関連するフィードバックを歓迎します。

none
要素は通常の CSS ルールに従ってレンダリングされます。 ウィジェット 以外の置換要素は影響を受けず、置換要素のままです。ウィジェット は ネイティブ表示 を持たず、 プリミティブ表示 を持つ必要があります。 詳細は § 7.2.2 要素の装飾的側面への appearance の影響 および § 7.2.3 要素の意味的側面への appearance の影響 を参照してください。
auto
要素のボックスは通常の置換要素と同様にレイアウトされます。

そのボックス内で、ウィジェット を表す要素は、そのウィジェットの ネイティブ表示 を持つべきです。

どの要素がどの ウィジェット を表すかはホスト言語が定義します。

ウィジェット 以外の要素は none と同様にレンダリングされなければなりません。

base
base の効果は適用される要素によります:
ウィジェット以外の要素

ウィジェット以外の要素は none と同様にレンダリングされます。

ウィジェット で 基本表示 をサポートするもの

none と同様に、要素は通常の CSS ルールに従ってレンダリングされます。ウィジェット は ネイティブ表示 を持たず、基本表示 を持つ必要があります。

基本表示をサポートしないウィジェット

基本表示を持たないウィジェット は auto と同様にレンダリングされます。どの ウィジェット が 基本表示 を持つかはホスト言語が定義します。

base-select
base-select の効果は適用される要素によります:
select 要素または ::picker(select)

要素は base と同様にレンダリングされます。

その他の要素

要素は auto と同様にレンダリングされます。

<compat-auto>
これらの値は、以前の非標準バージョンで作られたコンテンツとの互換性のために存在します。 すべて auto と同じ効果を持ちます。
<compat-auto> =  searchfield | textarea | checkbox | radio | menulist | listbox | meter | progress-bar | button 

auto が広くサポートされる場合は、それを使用することを推奨します。

これらの値のいずれかがウェブ互換性のために不要な場合は、このリストから削除すべきです。逆に、互換性のために必要な値でリストに含まれていないものは追加する必要があります。

互換性の理由で、これらの値の一部を任意の要素に効果を持つ正式な値に昇格させる必要がある場合や、 一部の ウィジェット に副作用を持たせる必要がある可能性があります。

<compat-special>
これらの値は、以前の非標準バージョンで作られたコンテンツとの互換性のために存在します。 この仕様書の目的では、すべて auto と同じ効果を持ちます。 ただし、ホスト言語は要素の ネイティブ表示 を定義する際に、これらの値を考慮する場合があります。
<compat-special> =  textfield | menulist-button 
例えば [HTML] では:
  • input 要素で "search" type 属性を持つもののネイティブ表示は、 input 要素で "text" type 属性を持つものと一致するように変化します。 これは appearance が textfield の場合です。

  • ドロップダウンボックスの select 要素のネイティブ表示は、 devolved 状態と一致するように変化します。 これは appearance が menulist-button の場合です。

値 slider-vertical および sliderthumb-vertical は、一部のユーザーエージェントで <input type=range> 要素の方向を変更するためにサポートされています。 しかし、これらの値は仕様には含まれていません。このコントロールの方向を変更する場合は、別の仕組みを使う方が適切だからです。 詳細は whatwg/html#4177 を参照してください。
HTML でチェックボックスの見た目をカスタマイズしたい場合、以下のように書くことができます:
input[type=checkbox] {
  all: unset; /* この省略記法には appearance を none にリセットすることも含まれる */
  width: 1em; 
  height: 1em; 
  display: inline-block; 
  background: red; 
} 
input[type=checkbox]:checked { 
  border-radius: 50%; 
  background: green; 
} 
input[type=checkbox]:focus-visible { 
  outline: auto; 
} 

<input type="checkbox"> は として表示され、 <input type="checkbox" checked> は として表示され、要素をアクティブ化(例えばクリック)すると状態が通常通り切り替わります。

ユーザーエージェントは、一部の CSS プロパティを無視することがあります。これは、ウィジェット が ネイティブ表示 でレンダリングされる場合に、意図した外観を保持するため、 またはこれらのプロパティが選択された表示に対して意味を持たない場合があるためです。

無視(Disregarding) とは、ユーザーエージェントがそのプロパティを対象のウィジェットに 適用されていないかのように扱うことを意味します。 それでも、明示的な例外が指定されていない限り(互換性の理由で)、ユーザーエージェントは通常のルールに従って、無視されたプロパティの計算済み値 を決定する必要があります。

詳細には、ネイティブレンダリングされたウィジェットのプロパティを無視するルールは以下の通りです:

一部のユーザーエージェントは、border および padding CSS プロパティを ネイティブ表示 でレンダリングされた <select> に対しては尊重しますが、 <input type=checkbox> には適用されません。

ウィジェットのネイティブレンダリングは、その固有サイズがボックスサイズを超える場合、ボックスサイズをはみ出すことがあります。

古いコンテンツとの互換性のため、ユーザーエージェントは -webkit-appearance を 旧名称の別名 としてサポートし、appearance と同様に扱う必要があります。

7.2.1. ネイティブ表示を無効化するプロパティ

特定のプロパティは、Author Origin で宣言されると、 一部の ウィジェット の ネイティブ表示 を無効化します。 具体的には、その ウィジェット に関連する Author Origin のすべての宣言がカスケードされ、 かつ カスケード値 が存在する場合(任意の revert または revert-layer 値を巻き戻した後でも)、 ウィジェットのネイティブ表示を無効化するプロパティ のいずれかが適用される場合、 その ウィジェット は デボルブされたウィジェット としてレンダリングされます。 デボルブされたウィジェット のレンダリングは、ホスト言語で別途指定されない限り、 ウィジェット の プリミティブ表示 と同一です。

ホスト言語は、どの要素が デボルブ可能ウィジェット を表すかを定義します。 ウィジェットのネイティブ表示を無効化するプロパティに関係なく表示がネイティブのまま残るウィジェットは 非デボルブウィジェット と呼ばれます。

ウィジェットのネイティブ表示を無効化するプロパティ は以下の通りです:

7.2.2. appearance が要素の装飾に与える影響

CSS スタイルルールによって発生していない、ウィジェット の装飾的視覚要素は、 appearance を使用して ネイティブ表示 から プリミティブ表示 に変更した場合、抑制されなければなりません。 これは、UA の内部表現が複数の要素や疑似要素を組み合わせて構成されていた場合でも同様です。

例えば、 [HTML] select 要素は、右側にリストが展開されることを示す矢印が表示されることが多いです。 select 要素の appearance の計算済み値が none の場合、この矢印は消えなければなりません。

UA は、ウィジェット に appearance が none の場合に、認識可能な形状を与えるための スタイルルールを UA スタイルシートに含めるべきです。

Note: したがって、著者はこれらの UA スタイルルールを上書きして、 意図したスタイリングを適用する必要があります。

著者は、完全に未スタイルの ウィジェット を取得するために all: unset を使用すると便利です。 これにより、UA スタイルシートの干渉なしに好きなようにスタイルを設定できます。 ただし、同時に UA スタイルシートによるフォーカスインジケータも抑制されます。 アクセシビリティを損なわないためには、これを行う著者はフォーカスインジケータを復元する必要があります。 例えば :focus-visible { outline: auto; } を使用する方法があります。

7.2.3. 要素のセマンティック側面に対する appearance の影響

ウィジェット の 原始的な外観 またはその 委譲された状態 を表示する際、ユーザーエージェントは元のセマンティクスで ウィジェット を操作するために必要なウィジェットの側面を保持する必要があります。 ただし、ウィジェット を操作可能である限り、異なる見た目を与えることは可能です。 ウィジェット の状態を観察するためだけのウィジェットの側面で、操作に必要ないものは、 通常の CSS で同じ情報を伝えられる場合には抑制されるべきです。 ドキュメント言語は定義する各 ウィジェット に対して、 何を保持すべきかを指定すべきです。

例えば、 <input type=range> のスライダーは appearance が none であっても保持されます (または同等の機構に置き換えられます)、さもなければマウスやタッチ操作で値を変更できなくなるからです。

一方で、<input type=checkbox checked> のチェックマークは抑制される必要があります。 これは要素が現在の状態であることを示すだけであり、 :checked セレクターで異なる方法でスタイル設定可能だからです。

要素の振る舞いとセマンティクスはドキュメント言語によって定義されており、 このプロパティによって影響を受けることはありません。

例えば、appearance の計算値にかかわらず:

逆に、要素の外観を変更しても、それによってその外観を持つ要素固有の セマンティクス、疑似クラス、イベントハンドラなどを取得することはありません。

例えば、 :enabled も :disabled も div に appearance: button を適用してもマッチしません。 要素がフォーカス可能である能力も appearance プロパティによって変わることはありません。

7.3. コントロール固有のルール

このセクションの一部または全部は、 将来的に [HTML] 仕様に移動すべきかもしれません。

一部の要素では、特定のプロパティを設定すると appearance: auto が抑制されます。 例えば、appearance が auto であっても、 ボタンに border を設定すると ネイティブ外観が失われます。 これは auto の定義と矛盾するものではありません。 appearance: auto は UA がネイティブ外観を使用することを 許可する だけだからです。 相互運用性を高めるために、どの要素でどのプロパティがこの効果を持つか文書化すると良いでしょう。

UA スタイルシートに何を含める必要があるかを文書化すると良いでしょう。

7.3.1. 単一行テキスト入力コントロール

appearance が auto の場合、 単一行テキスト入力コントロールは [HTML] の <input type=text> のようにレンダリングされなければなりません:


付録 A. 謝辞

この付録は 参考情報 です。

この仕様は [CSS-UI-3] を基にしています。 この仕様は主に Tantek Çelik によって 1999 年から現在まで編集・執筆されました。 最初は Microsoft を代表して、次に招待専門家として、最近では Mozilla を代表して行われました。

以下の方々からのフィードバックと貢献に感謝します:Rossen Atanassov、Tab Atkins、L. David Baron、Bert Bos、Matthew Brealey、Rick Byers、Ada Chan、James Craig、Michael Cooper、Axel Dahmen、Michael Day、Micah Dubinko、Elika E.、Steve Falkenburg、Andrew Fedoniouk、Al Gilman、 Ian Hickson、Bjoern Hoehrmann、Alan Hogan、David Hyatt、Richard Ishida、Sho Kuwamoto、Yves Lafon、Stuart Langridge、Susan Lesch、Peter Linss、Kang-Hao Lu、Masayuki Nakano、Mats Palmgren、Brad Pettit、Chris Rebert、François Remy、Andrey Rybka、Simon Sapin、Alexander Savenkov、Sebastian Schnitzenbaumer、Lea Verou、Etan Wexler、David Woolley、Frank Yan、Boris Zbarsky、 および Domel に感謝します。

付録 B. 変更履歴

この付録は 参考情報 です。

2021 年 3 月 16 日ワーキングドラフトからの変更

いくつかの編集上の調整に加えて、以下の規範的な変更が行われました:

2020年1月24日ワーキングドラフトからの変更

いくつかの編集上の調整に加えて、以下の規範的な変更が行われました:

2020年1月2日ワーキングドラフトからの変更

いくつかの編集上の調整に加えて、以下の規範的な変更が行われました:

2017年12月22日ワーキングドラフトからの変更

いくつかの編集上の調整に加えて、以下の規範的な変更が行われました:

2015年9月22日 初公開ワーキングドラフトからの変更

いくつかの編集上の調整に加えて、以下の規範的な変更が行われました:

CSS UI Level 3 からの変更

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

この付録は 参考情報 です。

W3C TAG は、仕様の編集者が参考情報として回答できる 自己評価アンケート:セキュリティとプライバシー を作成中です。

考慮すべき質問 に基づく:

この仕様は個人を特定できる情報を扱いますか?
いいえ。
この仕様は高価値データを扱いますか?
いいえ。
この仕様はブラウズセッションを越えて持続するオリジンの新しい状態を導入しますか?
いいえ。
この仕様はウェブに持続的なクロスオリジン状態を公開しますか?
いいえ。
この仕様はオリジンが現在アクセスできない他のデータを公開しますか?
いいえ。
この仕様はオリジンにユーザーの位置情報へのアクセスを許可しますか?
いいえ。
この仕様はオリジンにユーザーのデバイス上のセンサーへのアクセスを許可しますか?
はい。

方向性フォーカスナビゲーションプロパティは、矢印キーなどのデバイスのキーボードナビゲーション入力機構への間接的なアクセスを許可します。

この仕様はオリジンにユーザーのローカル計算環境へのアクセスを許可しますか?
いいえ。
この仕様はオリジンに他のデバイスへのアクセスを許可しますか?
いいえ。
この仕様は一時的な識別子をウェブに公開しますか?
いいえ。
この仕様はファーストパーティとサードパーティの文脈での挙動を区別しますか?
いいえ。
ユーザーエージェントの「シークレットモード」での動作は?
特に異ならない。
この仕様はユーザーのローカルデバイスにデータを保持しますか?
いいえ。

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

この付録は 参考情報 です。

W3C TAG は、仕様の編集者が参考情報として回答できる 自己評価アンケート:セキュリティとプライバシー を作成中です。

考慮すべき質問 に基づく:

この仕様は新しいスクリプト実行/読み込みメカニズムを可能にしますか?
読み込みは「はい」、実行は「いいえ」。

cursor プロパティは <image> 値を受け入れ、これには読み込むURLを含む可能性があります。 これらはスクリプトを含む可能性のあるSVG文書であることがありますが、本仕様ではスクリプトを実行してはなりません。

この仕様はオリジンにユーザーエージェントのネイティブUIを制御させますか?
はい。

cursor プロパティ、caret プロパティおよびその下位プロパティにより、 ページはユーザーエージェントの ネイティブ UI のカーソルおよびテキスト挿入キャレットの表示を変更できる。 さらに、outline-style プロパティの auto 値 (したがって、outline ショートハンドも) により、ページは任意の 要素の周囲に、フォーカスされた要素を示すネイティブのアウトライン表現を表示できる可能性がある。

appearance プロパティは、著者がネイティブスタイルをオフにしてCSSベースのスタイリングに置き換えることも可能にします。

この仕様はデフォルトのセキュリティ特性を低下させますか?
いいえ。

付録E: HTML向けデフォルトスタイルシート追加

この付録は 参考情報 です。

HTMLフォームコントロールやいくつかの動的プレゼンテーション属性を表現するための、基本スタイルシートへの追加例:

:enabled:focus {
  outline: 2px inset;
}

button,
input[type=button],
input[type=reset],
input[type=submit],
input[type=checkbox],
input[type=radio],
textarea,
input,
input[type=text],
input[type=password],
input[type=image] {
  display: inline-block;
}

input[type=button],
input[type=reset],
input[type=submit],
input[type=checkbox],
input[type=radio],
input,
input[type=text],
input[type=password],
input[type=image] {
  white-space: nowrap;
}

button {
  /* BUTTONタグ特有の空白処理 */
  white-space:normal;
}

input[type=reset]:lang(en) {
  /* HTML input type=resetボタンのデフォルト内容(言語ごと) */
  content: "Reset";
}

input[type=submit]:lang(en) {
  /* HTML input type=submitボタンのデフォルト内容(言語ごと) */
  content: "Submit";
}

/* 他の言語については、UAは言語固有のReset/Submitルールを使用すべき */

input[type=button],
input[type=reset][value],
input[type=submit][value] {
  /* HTML「input」ボタンのテキスト内容/ラベル */
  content: attr(value);
}

textarea {
  /* TEXTAREAタグ特有の空白処理 */
  white-space:pre-wrap;
  resize: both;
}

input[type=hidden] {
  /* HTML hiddenテキストフィールドの表示 */
  display: none !important;
}

input[type=image] {
  content: attr(src,url);
  border: none;
}

select[size] {
  /* HTML4/XHTML1 <select> sizeが1より大きい場合のリスト表示 */
  display: inline-block;
  height: attr(size,em);
}

select,select[size=1] {
  /* HTML4/XHTML1 <select> sizeが指定なし、または1の場合 - ポップアップメニュー */
  display: inline-block;
  height: 1em;
  overflow: hidden;
}

select[size]:active {
  /* sizeが1より大きいHTML <select> のアクティブ表示 */
  display: inline-block;
}

optgroup, option {
  display: block;
  white-space: nowrap;
}

optgroup[label],option[label] {
  content: attr(label);
}

option[selected]::before {
  display: inline;
  content: check;
}

/* FRAMEのリサイズは本仕様で直接扱われないが、以下は合理的な挙動の近似を提供する */
/*
frame { resize:both }
frame[noresize] { resize:none }
*/

適合性

文書の慣例

適合性要件は、記述的な主張と 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"> で区別されます。例: UAs MUST provide an accessible alternative.

適合性クラス

この仕様への適合性は、以下の3つの適合性クラスで定義されます:

スタイルシート
CSSスタイルシート。
レンダラー
UA で、スタイルシートの意味を解釈し、それを用いた文書をレンダリングするもの。
作成ツール
UA で、スタイルシートを作成するもの。

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

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

作成ツールは、汎用CSS文法およびこのモジュール内の各機能の個別文法に従って文法的に正しいスタイルシートを書き、さらにスタイルシートに関するすべての適合性要件を満たしていれば、この仕様に適合します。

部分的な実装

著者がフォールバック値を割り当てるために将来互換性のあるパース規則を利用できるように、CSSレンダラーは、サポートがない at-rule、プロパティ、プロパティ値、キーワード、その他構文構造を無効と見なす(必要に応じて無視する)必要があります。特に、UAは、未サポートの値を選択的に無視して、サポートされた値のみを一つのマルチバリュープロパティ宣言で適用してはいけません:無効と見なされる値がある場合(未サポートの値は無効とする必要があります)、CSSは宣言全体を無視することを要求します。

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

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

非実験的実装

仕様が候補勧告(CR)段階に到達すると、非実験的な実装が可能となり、実装者は、CRレベルの機能を仕様通りに正しく実装していることを示せる場合、プレフィックスなしで実装を公開するべきです。

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

テストケースおよび実装報告書の提出方法の詳細は、CSS作業部会のウェブサイトで確認できます:https://www.w3.org/Style/CSS/Test/。 質問はpublic-css-testsuite@w3.org メーリングリストまで。

索引

この仕様で定義された用語

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

参考文献

規範的参考文献

[CSS-BACKGROUNDS-3]
Elika Etemad; Brad Kemper. CSS 背景および境界モジュール レベル 3. 2024年3月11日. CRD. URL: https://www.w3.org/TR/css-backgrounds-3/
[CSS-BORDERS-4]
Elika Etemad; 他. CSS 境界およびボックス装飾モジュール レベル 4. 2025年12月16日. WD. URL: https://www.w3.org/TR/css-borders-4/
[CSS-BOX-4]
Elika Etemad. CSS ボックスモデルモジュール レベル 4. 2024年8月4日. WD. URL: https://www.w3.org/TR/css-box-4/
[CSS-CASCADE-5]
Elika Etemad; Miriam Suzanne; Tab Atkins Jr.. CSS カスケードおよび継承 レベル 5. 2022年1月13日. CR. URL: https://www.w3.org/TR/css-cascade-5/
[CSS-COLOR-4]
Chris Lilley; Tab Atkins Jr.; Lea Verou. CSS カラーモジュール レベル 4. 2025年4月24日. CRD. URL: https://www.w3.org/TR/css-color-4/
[CSS-COLOR-5]
Chris Lilley; 他. CSS カラーモジュール レベル 5. 2026年1月13日. WD. URL: https://www.w3.org/TR/css-color-5/
[CSS-DISPLAY-3]
Elika Etemad; Tab Atkins Jr.. CSS 表示モジュール レベル 3. 2023年3月30日. CR. URL: https://www.w3.org/TR/css-display-3/
[CSS-DISPLAY-4]
Elika Etemad; Tab Atkins Jr.. CSS 表示モジュール レベル 4. 2025年11月6日. WD. URL: https://www.w3.org/TR/css-display-4/
[CSS-IMAGES-3]
Tab Atkins Jr.; Elika Etemad; Lea Verou. CSS 画像モジュール レベル 3. 2023年12月18日. CRD. URL: https://www.w3.org/TR/css-images-3/
[CSS-OVERFLOW-3]
Elika Etemad; Florian Rivoal. CSS オーバーフローモジュール レベル 3. 2025年10月7日. WD. URL: https://www.w3.org/TR/css-overflow-3/
[CSS-OVERFLOW-4]
David Baron; Florian Rivoal; Elika Etemad. CSS オーバーフローモジュール レベル 4. 2023年3月21日. WD. URL: https://www.w3.org/TR/css-overflow-4/
[CSS-PAGE-3]
Elika Etemad. CSS ページメディアモジュール レベル 3. 2023年9月14日. WD. URL: https://www.w3.org/TR/css-page-3/
[CSS-PSEUDO-4]
Elika Etemad; Alan Stearns. CSS 疑似要素モジュール レベル 4. 2025年6月27日. WD. URL: https://www.w3.org/TR/css-pseudo-4/
[CSS-SHADOW-1]
CSS シャドウモジュール レベル 1. 編集者草稿. URL: https://drafts.csswg.org/css-shadow-1/
[CSS-SIZING-3]
Tab Atkins Jr.; Elika Etemad. CSS ボックスサイズモジュール レベル 3. 2021年12月17日. WD. URL: https://www.w3.org/TR/css-sizing-3/
[CSS-TRANSFORMS-1]
Simon Fraser; 他. CSS 変形モジュール レベル 1. 2019年2月14日. CR. URL: https://www.w3.org/TR/css-transforms-1/
[CSS-UI-3]
Tantek Çelik; Florian Rivoal. CSS 基本ユーザーインターフェイスモジュール レベル 3 (CSS3 UI). 2018年6月21日. REC. URL: https://www.w3.org/TR/css-ui-3/
[CSS-VALUES-3]
Tab Atkins Jr.; Elika Etemad. CSS 値および単位モジュール レベル 3. 2024年3月22日. CRD. URL: https://www.w3.org/TR/css-values-3/
[CSS-VALUES-4]
Tab Atkins Jr.; Elika Etemad. CSS 値および単位モジュール レベル 4. 2024年3月12日. WD. URL: https://www.w3.org/TR/css-values-4/
[CSS-WRITING-MODES-3]
Elika Etemad; Koji Ishii. CSS 書字方向モジュール レベル 3. 2019年12月10日. REC. URL: https://www.w3.org/TR/css-writing-modes-3/
[CSS-WRITING-MODES-4]
Elika Etemad; Koji Ishii. CSS 書字方向モジュール レベル 4. 2019年7月30日. CR. URL: https://www.w3.org/TR/css-writing-modes-4/
[CSS21]
Bert Bos; 他. カスケーディングスタイルシート レベル 2 改訂版 1 (CSS 2.1) 仕様. 2011年6月7日. REC. URL: https://www.w3.org/TR/CSS2/
[CSS4-IMAGES]
Elika Etemad; Tab Atkins Jr.; Lea Verou. CSS 画像モジュール レベル 4. 2025年9月30日. WD. URL: https://www.w3.org/TR/css-images-4/
[CSS4BACKGROUND]
Bert Bos; Elika J. Etemad; Lea Verou. CSS 背景および境界モジュール レベル 4. CSS モジュール提案. URL: https://drafts.csswg.org/css-backgrounds-4/
[DOM]
Anne van Kesteren. DOM 標準. リビングスタンダード. URL: https://dom.spec.whatwg.org/
[FILTER-EFFECTS-1]
Dirk Schulze; Dean Jackson. フィルター効果モジュール レベル 1. 2018年12月18日. WD. URL: https://www.w3.org/TR/filter-effects-1/
[HTML]
Anne van Kesteren; 他. HTML 標準. リビングスタンダード. URL: https://html.spec.whatwg.org/multipage/
[INFRA]
Anne van Kesteren; Domenic Denicola. Infra 標準. リビングスタンダード. URL: https://infra.spec.whatwg.org/
[PNG]
Chris Lilley; 他. ポータブルネットワークグラフィックス (PNG) 仕様 第3版. 2025年6月24日. REC. URL: https://www.w3.org/TR/png-3/
[RFC2119]
S. Bradner. RFC での要求レベルを示すためのキーワード. 1997年3月. ベストカレントプラクティス. URL: https://datatracker.ietf.org/doc/html/rfc2119
[SELECTORS-4]
Elika Etemad; Tab Atkins Jr.. セレクター レベル 4. 2022年11月11日. WD. URL: https://www.w3.org/TR/selectors-4/
[SVG11]
Erik Dahlström; 他. スケーラブルベクターグラフィックス (SVG) 1.1 (第2版). 2011年8月16日. REC. URL: https://www.w3.org/TR/SVG11/
[SVG2]
Amelia Bellamy-Royds; 他. スケーラブルベクターグラフィックス (SVG) 2. 2018年10月4日. CR. URL: https://www.w3.org/TR/SVG2/
[UAX29]
Josh Hadley. Unicode テキスト分割. 2025年8月17日. Unicode 標準付録 #29. URL: https://www.unicode.org/reports/tr29/tr29-47.html

参考情報

[CSS-COLOR-ADJUST-1]
Elika Etemad; 他 CSS カラー調整モジュール レベル 1. 2025年12月16日. CR. URL: https://www.w3.org/TR/css-color-adjust-1/
[CSS-CONDITIONAL-3]
Chris Lilley; David Baron; Elika Etemad. CSS 条件ルールモジュール レベル 3. 2024年8月15日. CRD. URL: https://www.w3.org/TR/css-conditional-3/
[CSS-LOGICAL-1]
Elika Etemad; Rossen Atanassov. CSS 論理プロパティおよび値モジュール レベル 1. 2025年12月4日. WD. URL: https://www.w3.org/TR/css-logical-1/
[CSS1]
Håkon Wium Lie; Bert Bos. カスケーディングスタイルシート レベル 1. 2018年9月13日. REC. URL: https://www.w3.org/TR/CSS1/
[CSS3-ANIMATIONS]
David Baron; 他 CSS アニメーション レベル 1. 2023年3月2日. WD. URL: https://www.w3.org/TR/css-animations-1/
[HTML5]
Ian Hickson; 他 HTML5. 2018年3月27日. REC. URL: https://www.w3.org/TR/html5/
[SELECT]
Tantek Çelik; 他 セレクター レベル 3. 2018年11月6日. REC. URL: https://www.w3.org/TR/selectors-3/
[WCAG]
Michael Cooper; 他 ウェブコンテンツアクセシビリティガイドライン (WCAG) 2.2. 2024年12月12日. REC. URL: https://www.w3.org/TR/WCAG22/
[WCAG20]
Ben Caldwell; 他 ウェブコンテンツアクセシビリティガイドライン (WCAG) 2.0. 2008年12月11日. REC. URL: https://www.w3.org/TR/WCAG20/

プロパティ索引

名前 値 初期値 適用対象 継承 パーセンテージ アニメーションタイプ 標準順序 計算後の値
accent-color auto | <color> auto すべての要素 はい N/A 計算後の値タイプに基づく 文法順 キーワード auto または計算された色
appearance none | auto | base | base-select | <compat-auto> | <compat-special> none すべての要素 いいえ n/a 離散 文法順 指定されたキーワード
caret <'caret-color'> || <'caret-animation'> || <'caret-shape'> auto テキストまたはテキスト入力を受け入れる要素 はい N/A 個別プロパティを参照 文法順 個別プロパティを参照
caret-animation auto | manual auto テキストまたはテキスト入力を受け入れる要素 はい N/A 離散 文法順 指定されたキーワード
caret-color auto | <color> auto テキストまたはテキスト入力を受け入れる要素 はい N/A 計算後の値に基づく 文法順 auto の計算後の値は auto。 <color> 値の場合は CSS Color 4 § 14. Resolving <color> Values を参照
caret-shape auto | bar | block | underscore auto テキストまたはテキスト入力を受け入れる要素 はい N/A 計算後の値に基づく 文法順 指定されたキーワード
cursor [<cursor-image>,]* <cursor-predefined> auto すべての要素 はい N/A 離散 文法順 指定通り。ただし相対URLは絶対URLに変換
interactivity auto | inert auto すべての要素 はい N/A 離散 文法順 指定通り
interest-delay <'interest-delay-start'>{1,2} 個別プロパティ参照 個別プロパティ参照 個別プロパティ参照 個別プロパティ参照 個別プロパティ参照 文法順 個別プロパティ参照
interest-delay-end normal | <time> normal すべての要素 はい n/a 計算後の値タイプに基づく 文法順 キーワード normal または計算された時間
interest-delay-start normal | <time> normal すべての要素 はい n/a 計算後の値タイプに基づく 文法順 キーワード normal または計算された時間
nav-down auto | <id> [ current | root | <target-name> ]? auto すべての有効要素 いいえ N/A 離散 文法順 指定通り
nav-left auto | <id> [ current | root | <target-name> ]? auto すべての有効要素 いいえ N/A 離散 文法順 指定通り
nav-right auto | <id> [ current | root | <target-name> ]? auto すべての有効要素 いいえ N/A 離散 文法順 指定通り
nav-up auto | <id> [ current | root | <target-name> ]? auto すべての有効要素 いいえ N/A 離散 文法順 指定通り
outline <'outline-width'> || <'outline-style'> || <'outline-color'> 個別プロパティ参照 すべての要素 いいえ N/A 個別プロパティ参照 文法順 個別プロパティ参照
outline-color auto | <'border-top-color'> auto すべての要素 いいえ N/A 計算後の値に基づく 文法順 以下参照
outline-offset <length> 0 すべての要素 いいえ N/A 計算後の値に基づく 文法順 絶対長さ
outline-style auto | <outline-line-style> none すべての要素 いいえ N/A 計算後の値に基づく 文法順 指定されたキーワード
outline-width <line-width> medium すべての要素 いいえ N/A 計算後の値に基づく 文法順 絶対長さ(border幅にスナップ)
pointer-events auto | none auto すべての要素 はい N/A 計算後の値タイプに基づく 文法順 指定されたキーワード
resize none | both | horizontal | vertical | block | inline none スクロールコンテナ要素および画像、動画、iframeなどの置換可能要素 いいえ N/A 離散 文法順 指定されたキーワード
user-select auto | text | none | contain | all auto すべての要素、および必要に応じて ::before および ::after 擬似要素 いいえ n/a 離散 文法順 指定されたキーワード

課題索引

user-select を none 以外の値に変更できる場合、 コピー可能性や DOM API に対して何を意味するかを明確にする必要があります。 ↵
::marker にも適用すべきでしょうか? ::marker にも? page-margin boxes にも? used value が auto の場合も none にするべきか、 それとも text の方が適切でしょうか? ↵
編集ホストの編集可能な子孫要素に対して used value に何が起こるか制約は必要でしょうか? 意味は明確ではありません。 おそらく none は text にマップすべきか、 あるいはすべての値が text にマップされるべきかもしれません。 ↵
上記のリストは不完全で、少なくとも input のボタン風バリエーションを含める必要があります。 ↵
このプロパティはヒットテストの通常動作を変更しますが、 この通常の hit-testing は現時点で仕様化されていません。 明らかに思える部分には広く互換性がありますが、 細かいニュアンスやコーナーケースは詳細な仕様化によって大いに恩恵を受けます。 CSS-WG はこのような仕様作成の支援を非常に歓迎します。 ↵
上記の記述は条件付きである必要があります; ある目的では、ヒットテストは要素を考慮し続けます。 例えば、テキスト選択を開始するためのクリックとドラッグは通常通り機能します。 pointer-events によって ヒットテストが影響を受ける対象の正確な範囲は何でしょうか? ↵
以下を HTML スタイルシートに挿入して、 トップレベルのモーダルダイアログがデフォルトで uninert になるようにしてください:
[inert] {
  interactivity: inert;
}
dialog:modal {
  interactivity: auto;
}

上記の dialog:modal セレクターは、 デフォルトで inert 状態を脱する他の要素にも拡張する必要があります。

↵
appearance:base は、HTML 仕様でスタイルシートが完全に定義され、 すべての HTML フォームコントロールに実装されるまで出荷準備ができません。 ↵
auto が広くサポートされる場合は、 代わりに使用することを推奨します。 ↵
これらの値がウェブ互換性のために不要な場合はリストから削除すべきです; 逆に、互換性のために必要だがリストに含まれていない値は追加する必要があります。 ↵
互換性の理由で、一部の値を任意の要素に影響を与える完全な値として昇格させる必要がある場合や、 一部の値が特定の ウィジェット に副作用を持つ必要がある場合があります。 ↵
slider-vertical と sliderthumb-vertical は、 一部のユーザーエージェントで <input type=range> 要素の向きを変更するためにサポートされています。 これらの値は仕様化されていません。なぜなら、このコントロールの向きを変更するには 別のメカニズムを使う方が適切だからです。 詳細は issue whatwg/html#4177 を参照してください。 ↵
このセクションの一部または全部は、 いずれ [HTML] 仕様に移動するべきかもしれません。 ↵
一部の要素では、いくつかのプロパティを設定すると appearance: auto が抑制されます。 例えば、appearance が auto であっても、 ボタンは border を設定するとネイティブな見た目を失います。 これは auto の定義と矛盾しません。 なぜなら appearance: auto は UA がネイティブな見た目を使用できることを意味するだけであり、 より高い互換性のために、どのプロパティがどの要素にこの効果を与えるかを文書化することが望ましいです。 ↵
UA スタイルシートに何を入れる必要があるかを文書化することが望ましいです。 ↵