CSS 基本ユーザーインターフェイスモジュール レベル3(CSS3 UI)

W3C 勧告,

この文書の詳細
このバージョン:
https://www.w3.org/TR/2026/REC-css-ui-3-20260407/
最新公開バージョン:
https://www.w3.org/TR/css-ui-3/
エディタ草案:
https://drafts.csswg.org/css-ui-3/
過去のバージョン:
履歴:
https://www.w3.org/standards/history/css-ui-3/
実装報告:
https://drafts.csswg.org/css-ui-3/implementation-report
フィードバック:
CSSWG Issues Repository
編集者:
Tantek Çelik (Mozilla)
Florian Rivoal (Bloomberg を代表して)
この仕様に提案を送る:
GitHub Editor
テストスイート:
https://wpt.fyi/results/css/css-ui/

また、翻訳一覧もご覧ください。


要約

この仕様書は、HTMLやXML(XHTMLを含む)をスタイル付けするために、CSSレベル3で提案されているユーザーインターフェイス関連のプロパティと値について記述しています。CSSレベル2改訂1のプロパティや値からユーザーインターフェイス関連機能を取り入れつつ拡張しています。さまざまなプロパティや値を用いて、文書内の基本的なユーザーインターフェイス要素をスタイル付けできます。

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

この文書の位置付け

このセクションは、この文書が公開された時点での状態を説明しています。 W3Cの現在の発行物一覧や、本技術レポートの最新版は W3C 標準・草案一覧でご確認ください。

この文書は CSSワーキンググループ により、勧告トラックを用いて 「勧告」として公開されました。 修正版候補も含みます。

W3C勧告は、広範な合意形成の後にW3Cおよびその会員により推奨され、作業グループ会員による 実装へのロイヤリティフリー・ライセンス も付与されています。

修正版候補は文書中にマークされています。

W3Cは本仕様のウェブ標準として幅広い展開を推奨します。

ご意見は GitHubのissueでご提出ください(推奨)。 その際、タイトルに “css-ui” を含めてください。例: “[css-ui] …コメント要約…”. すべてのIssueやコメントはアーカイブされます。 または、(アーカイブあり) パブリックメーリングリストwww-style@w3.orgでも受け付けています。

本書は 2025年8月18日 W3Cプロセス文書に従って運用されています。

この文書は W3C特許ポリシーの下で作業を行うグループによって作成されました。 W3Cは、 本グループ成果物に関連した公開特許情報の一覧 を管理しています。 また、そのページには特許の公開方法も記載されています。 実際に特許を知っている場合には、それがEssential Claim(s) に該当すると考える場合は、 W3C特許ポリシー6節に則って情報を開示する必要があります。

1. はじめに

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

CSS1 の 2.1 節 [CSS1]CSS2 の 18 章 [CSS2] では、いくつかのユーザーインターフェイス関連のプロパティや値が導入されました。 User Interface for CSS3 (16 February 2000) では、さらに新しいユーザーインターフェイス関連機能がいくつか導入されました。

本仕様は、それらを取り込み、拡張し、置き換えるものです。

1.1. 目的

本仕様の目的は、次の目標を達成することです。

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

この文書は、以前の仕様には存在しなかった新しい機能を定義します。 さらに、次のものを置き換え、上書きします。

2.1. 値の定義

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

各プロパティ定義に挙げられているプロパティ固有の値に加えて、 本仕様で定義されるすべてのプロパティは プロパティ値として CSS ワイドキーワード も受け付けます。 可読性のため、それらは明示的には繰り返していません。

候補修正 3: [CSS-CASCADE-4][WEB-ANIMATIONS-1] により、 プロパティの定義方法が洗練され、 アニメーション型算出値 の基礎となる概念について 厳密な定義が与えられました。 本仕様全体にわたるプロパティの定義は、 この用語法を使うように更新されています。 多くの場合、これは編集上の変更に過ぎないと言えますが、 一部については、以前あいまいだった挙動を定義するものです。

3. ボックスモデルの追加

3.1. ボックスモデルの変更: box-sizing プロパティ

名前: box-sizing
値: content-box | border-box
初期値: content-box
適用対象: width または height を受け付けるすべての要素
継承: しない
百分率: N/A
算出値: 指定値
正規順序: 文法どおり
アニメーション型: 離散
content-box
これは CSS2.1 で指定されている width および height の挙動です。 指定された width および height(および対応する min/max プロパティ)は、 要素のコンテンツボックスの幅および高さにそれぞれ適用されます。 要素の padding と border は、指定された width および height の外側に レイアウト・描画されます。
border-box
この要素上の width および height(および対応する min/max プロパティ)の長さ・百分率値は、 要素のボーダーボックスを決定します。 つまり、要素に指定された任意の padding や border は、 この指定された width および height の内側にレイアウト・描画されます。 コンテンツの幅と高さは、 指定された width および height プロパティから、それぞれの辺の border と padding の幅を差し引くことで計算されます。 コンテンツの幅と高さは 負の値にはなりえない ([CSS2] 10.2 節) ため、この計算結果は 0 で切り上げられます。 getComputedStyle() などを通じて公開される使用値も、ボーダーボックスを参照します。

注: これは、置換要素や input 要素に対して レガシーな HTML ユーザーエージェントが一般に実装している width および height の挙動です。

注: 長さおよび百分率値とは対照的に、 auto 値(および後の仕様で導入された他のキーワード値は、 特に別途指定がない限り)を持つ width および height プロパティは box-sizing プロパティの影響を受けず、 常にコンテンツボックスのサイズを設定します。

box-sizing の算出値に応じて定義が変化する、 次の用語を導入します。

box-sizing: content-box box-sizing: border-box
最小内側幅 (min inner width) min-width max(0, min-widthpadding-leftpadding-rightborder-left-widthborder-right-width)
最大内側幅 (max inner width) max-width max(0, max-widthpadding-leftpadding-rightborder-left-widthborder-right-width)
最小内側高 (min inner height) min-height max(0, min-heightpadding-toppadding-bottomborder-top-widthborder-bottom-width)
最大内側高 (max inner height) max-height max(0, max-heightpadding-toppadding-bottomborder-top-widthborder-bottom-width)

CSS2 のビジュアル整形モデル詳細 [CSS2]box-sizing: content-box を 前提として書かれています。 すべての box-sizing 値について挙動を明確にするため、 次のようなあいまいさの解消を行います。

  1. 10.3.3 において、 次の一文中の 2 番目の widthコンテンツ幅 (content width) と解釈されなければなりません: もし widthauto ではなく、 かつ border-left-width + padding-left + width + [...]
  2. 10.3.7 において、 次の式中の widthコンテンツ幅 (content width) と解釈されなければなりません: left + margin-left + border-left-width + padding-left + width + [...]
  3. 10.4 において、 widthheightmin-widthmax-widthmin-height、 および max-height は、それぞれ次のように解釈されなければなりません。 コンテンツ幅 (content width)コンテンツ高 (content height)最小内側幅 (min inner width)最大内側幅 (max inner width)最小内側高 (min inner height)、 および 最大内側高 (max inner height)。 対象となるのは次の文です。
    1. 仮の使用幅 (tentative used width) は […] により計算される。
    2. もし仮の使用幅が max-width より大きい場合、 上の規則を再度適用するが、 このときは max-width の算出値を width の算出値として扱う。
    3. 結果の幅が min-width より小さい場合、 上の規則を再度適用するが、 このときは min-width の値を width の算出値として扱う。
    4. 表から、適切な制約違反に対応する解決済みの高さと幅の値を選択する。 max-width および max-height は max(min, max) として扱い、 min ≤ max が常に成り立つようにする。この表では w と h は 幅および高さの計算結果を表す […]
    5. この表内に現れるこれらの語のすべての出現箇所
    6. そして、上の「幅とマージンの計算」節の規則を、 width がこの値として算出されたかのように適用する。
  4. 10.6.4 において、 次の式中の heightコンテンツ高 (content height) と解釈されなければなりません: top + margin-top + border-top-width + padding-top + height + [...]
  5. 10.7 において、 widthheightmin-heightmax-height は、それぞれ コンテンツ幅 (content width)コンテンツ高 (content height)最小内側高 (min inner height)、 および 最大内側高 (max inner height) とし、それぞれ解釈されなければなりません。 対象となるのは次の文です。
    1. 仮の使用高 (tentative used height) は […] により計算される。
    2. この仮の高さが max-height より大きい場合、 上の規則を再度適用するが、 このときは max-height の値を height の算出値として扱う。
    3. 結果の高さが min-height より小さい場合、 上の規則を再度適用するが、 このときは min-height の値を height の算出値として扱う。
    4. [...] 上記「最小値および最大値の幅」の節のアルゴリズムを用いて、 使用幅および使用高を求める。 そして「高さおよびマージンの計算」節の規則を、 それらの結果の幅および高さを算出値とみなして適用する。

例:

box-sizing を使ってスペースを均等に分割する

この例では、box-sizing を使って、div コンテナー内に固定サイズの border を持つ 2 つの div を 水平方向に等分に分割しています。 そうしない場合は、追加のマークアップが必要になります。

CSS の例:

div.container {
  width:38em;
  border:1em solid black;
}

div.split {
  box-sizing:border-box;
  width:50%;
  border:1em silver ridge;
  float:left;
}

HTML フラグメントの例:

<div class="container">
<div class="split">This div occupies the left half.</div>
<div class="split">This div occupies the right half.</div>
</div>

サンプル CSS と HTML のデモ:

This div should occupy the left half.
This div should occupy the right half.
上の 2 つの div は、横に並んで表示され、それぞれ(border を含めて)コンテナーのコンテンツ幅の 50% を占めるはずです。 代わりに上下に積み重なって表示される場合は、 利用中のブラウザーが box-sizing をサポートしていません。

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

スタイルシートの著者は、ボタン、アクティブなフォームフィールド、イメージマップなどの ビジュアルオブジェクトの周りにアウトラインを描いて、目立たせたいことがあります。 アウトラインは、次の点で border と異なります。

  1. アウトラインはスペースを消費しない。
  2. アウトラインは非長方形であってよい。
  3. ユーザーエージェントは、:focus 状態にある要素にアウトラインを描画することが多い。

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

これらアウトラインの描画の積み重なり順は、 プラットフォームごとにより良いユーザー体験を提供できるよう、 実装に明示的に委ねられます。 これは、CSS 2.1 の付録 E [CSS2] で定義されている アウトラインの積み重なり順を上書きします。

キーボードユーザー、 特にページとそれ以外の方法ではほとんどやりとりできない障害を持つ人々は、 :focus 状態の要素にアウトラインが見えることに依存しています。 したがって著者は、 そのような要素においてアウトラインを見えなくする場合は、 代替のハイライト機構が提供されていることを 確実にしない限り、アウトラインを消してはなりません。

transform をアウトラインに適用した場合の描画については、 CSS3-UI では明示的に未定義とされています。

4.1. アウトラインの一括指定: outline プロパティ

名前: outline
値: [ <'outline-color'> || <'outline-style'> || <'outline-width'> ]
初期値: 個々のプロパティを参照
適用対象: すべての要素
継承: しない
百分率: N/A
算出値: 個々のプロパティを参照
正規順序: 文法どおり

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

候補修正 2: [CSS-VALUES-4] で、 いくつかの長さに対して「合理的な視覚表示」を保証するために適用される丸めの一種として border 幅としてスナップする という概念が導入されました。 他の border 類似のものとの一貫性のため、 outline-width がこの概念を用いるよう定義します。
候補修正 4: outline-widthoutline-style: none に基づいて 算出値 0 となるという特例を削除し、 同様の変更が column-rule-widthborder-width にも適用されている ことと整合させます。 (Issue 11494 を参照。)
名前: outline-width
値: <line-width>
初期値: medium
適用対象: すべての要素
継承: しない
百分率: N/A
算出値: 絶対長さ であり、 border 幅としてスナップされる ; outline のスタイルが none の場合は 0
正規順序: 文法どおり
アニメーション型: 長さ 算出値による

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

名前: outline-style
値: auto | <border-style>
初期値: none
適用対象: すべての要素
継承: しない
百分率: N/A
算出値: 指定どおり
正規順序: 文法どおり
アニメーション型: 離散

4.4. アウトラインカラー: outline-color プロパティ

名前: outline-color
値: <color> | invert
初期値: invert
適用対象: すべての要素
継承: しない
百分率: N/A
算出値: invert に対する算出値は invert である。 currentColor の算出値は currentColor である(currentcolor を参照)。 その他の <color> 値については color プロパティを参照。
正規順序: 文法どおり
アニメーション型: 算出値による

outline プロパティ群で作成されるアウトラインはボックスの「上」に描画されます。 すなわち、アウトラインは常に最前面にあり、 ボックス自身や他のどのボックスの位置や大きさにも影響を与えません。 したがって、アウトラインを表示したり非表示にしたりしても reflow は発生しません。

アウトラインは非長方形であっても構いません。 例えば、要素が複数行に分割されている場合、 アウトラインは要素のすべてのボックスを囲むアウトライン、または その最小集合であるべきです。

アウトラインの各部分は、いくつかの辺が開いたままであるのではなく (行が分割されるときにインライン要素の border がそうなるように)、 完全につながっているべきです。

アウトラインの各部分は長方形である必要はありません。 アウトラインが border edge に従う範囲においては、 border-radius の曲線に従うべきです。

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

ユーザーエージェントは、ユーザーに「フォーカス」という概念が適切に伝わるような領域を 包含するアウトラインを決定するアルゴリズムを使用すべきです。

注: 本仕様はアウトラインの正確な位置や形状を定義していませんが、 通常は border ボックスのすぐ外側に描かれます。

outline-width プロパティは、 border-width と同じ値を受け付けます (CSS Backgrounds 3 § 3.3 線の太さ: border-width プロパティ)。

outline-style プロパティは、 border-style と同じ値を受け付けます (CSS Backgrounds 3 § 3.2 線パターン: border-style プロパティ)。 ただし、hidden は合法なアウトラインスタイルではありません。 さらに CSS3 では、 outline-style は値 auto も受け付けます。 auto 値により、ユーザーエージェントは プラットフォームのユーザーインターフェイス既定に相当するスタイルや、 CSS で詳細に記述できるものよりも豊かなスタイル (例えば、外側のピクセルが半透明になって光っているように見える、 角丸アウトラインなど)などの 独自のアウトラインスタイルをレンダリングできます。 そのため、本仕様では、 auto スタイルのアウトラインをレンダリングする際に、 outline-color がどのように (あるいはそもそも)使用されるかを定義しません。 ユーザーエージェントは autosolid として扱ってもかまいません。

outline-color プロパティは すべての色と、キーワード invert を受け付けます。 invert は、 画面上のピクセルに対して色の反転を行うことが期待されています。 これは、背景色に関わらずフォーカス枠が見えるようにするための 一般的なテクニックです。

準拠した UA は、 画面上のピクセルの色反転をサポートしていないプラットフォームでは invert 値を無視してもかまいません。

UA が invert 値をサポートしない場合、 その値はパース時に拒否しなければならず、 outline-color プロパティの初期値は currentColor キーワードになります。

outline プロパティは一括指定プロパティであり、 outline-styleoutline-widthoutline-color の 3 つすべてを設定します。

注: アウトラインはすべての辺で同じです。 border とは対照的に、 outline-topoutline-left などのプロパティは存在しません。

本仕様は、複数のアウトラインが重なり合う場合にどのように描画されるか、 あるいは他の要素の背後に部分的に隠れているボックスのアウトラインが どのように描画されるかを定義しません。

例:

次は、BUTTON 要素の周りに太いアウトラインを描画する例です。

button { outline: thick solid }

グラフィカルユーザーインターフェイスでは、要素の周りにアウトラインを描画して、 ページのどの要素にフォーカスがあるかをユーザーに伝えることがあります。 これらのアウトラインは border とは別のものであり、 アウトラインのオン・オフを切り替えても文書が再レイアウトされるべきではありません。 フォーカスとは、文書内でユーザー操作の対象となっているもの (例: テキストの入力やボタンの選択)を指します。

例:

例えば、要素にフォーカスがあるときに太い黒線を、 アクティブなときに太い赤線を周囲に描画するには、 次のルールを使用できます。

:focus  { outline: thick solid black }
:active { outline: thick solid red }

注: アウトラインはフォーマット (つまりボックスモデルでスペースを確保するかどうか)には影響しないため、 ページ上の他の要素と重なり合う場合があります。

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

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

名前: outline-offset
値: <length>
初期値: 0
適用対象: すべての要素
継承: しない
百分率: N/A
算出値: <length> 値を絶対単位 (px または物理単位) に変換したもの。 絶対長さ
正規順序: 文法どおり
アニメーション型: 長さ 算出値による

outline-offset の算出値が 0 以外の場合、 アウトラインは border edge から その値だけ外側にオフセットされます。

例:

例えば、focus または active な要素とそのフォーカスアウトラインとの間に 2 ピクセルのスペースを空けたい場合は、次のルールを使用できます。

:focus,:active  { outline-offset: 2px }

負の値を指定した場合、アウトラインは ボーダーボックス内側に向かって縮むようにしなければならない。 アウトラインが描く形状の外側の高さおよび幅の両方は、 outline-width プロパティの 算出値の2倍より小さくならないようにしなければならない。 これにより、大きな負の値でもアウトラインが描画できることを保証する。 ユーザーエージェントは、この制約を各次元ごとに 独立して適用するべきである。 アウトラインが複数の分離した形状として描画される場合は、 この制約は各形状に個別に適用される。

5. リサイズとオーバーフロー

CSS2.1 では、ブロックコンテナー要素上のスクロール機構 (例: スクロールバー)の見た目を制御する仕組みが提供されています。 本仕様ではそれに加えて、要素をユーザーがリサイズできるかどうかを制御する仕組みと、 テキストのオーバーフロー動作を指定する機能が追加されます。

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

resize プロパティにより、 要素をユーザーがリサイズできるかどうか、 できる場合はどの軸に沿ってリサイズできるかを 著者が指定できます。

候補修正 1: overflow: visible がもはや、 要素を スクロールコンテナー にしない唯一の値ではなくなったため、 resize プロパティが 適用される要素を、文字どおりの本文ではなく本来意図されていたものに合わせるよう調整します。
名前: resize
値: none | both | horizontal | vertical
初期値: none
適用対象: 要素 overflow が visible 以外のもの) のうち、スクロールコンテナーであるもの および、画像・動画・iframe などの置換要素(オプション)
継承: しない
百分率: N/A
算出値: 指定どおり 指定されたキーワード
正規順序: 文法どおり
アニメーション型: 離散
none
UA は要素にリサイズ機構を提示せず、 ユーザーにはその要素をリサイズするための直接的な操作手段は与えられません。
both
UA は双方向(水平および垂直)のリサイズ機構を提示し、 ユーザーが要素の高さと幅の両方を調整できるようにします。
horizontal
UA は水平方向の一方向リサイズ機構を提示し、 ユーザーが要素の幅のみを調整できるようにします。
vertical
UA は垂直方向の一方向リサイズ機構を提示し、 ユーザーが要素の高さのみを調整できるようにします。

現在、要素上のスクロール機構(もしあれば)の見た目は、 overflow プロパティ (例: overflow: scrolloverflow: hidden など) を用いて制御できます。 resize プロパティの目的は、 要素上のリサイズ機構(例: リサイズボックスやウィジェット)の 見た目および機能を制御できるようにすることです。

注: リサイズ機構はスクロール機構とは同じものではなく、 また UA のズーム機構とも関係しません。 スクロール機構は、ユーザーが要素のコンテンツのどの部分を表示するかを決定できるようにします。 リサイズ機構は、ユーザーが要素そのものの大きさを決定できるようにします。

resize プロパティは 算出値の overflow プロパティが visible 以外である要素に適用されます。 スクロールコンテナーである要素に適用されます。 UA はさらに、 overflow プロパティの値に関わらず、 次のものにも適用してよいとされています。

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

注: resize プロパティは、 将来的に、CSSPseudoElement インターフェイス([css-pseudo-4] 参照)の実装が行われた場合には、 生成コンテンツにも適用される可能性があります。

要素がユーザーによってリサイズされると、 ユーザーエージェントは 要素の width および height プロパティを、 ユーザーが示したサイズに対応する px 単位の長さ値に設定します。 これは、その要素の style 属性 DOM 内に設定され、 既存の宣言(もしあれば)を、!important ではないものに限り(もしあれば)置き換えます。

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

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

ユーザーエージェントは、ユーザーが要素をリサイズできるようにしなければならず、 その際の制約は、 min-widthmax-widthmin-heightmax-height が課すもの以外にはならないようにしなければなりません。

注: !important 付きのカスケーディング宣言により、 要素の style 属性 内の widthheight プロパティを上書きすることがあるため、 ユーザーがリサイズを試みてもそれが上書き・無視されているように見える状況が ありえます。

要素の resize プロパティの算出値が変化しても、 その要素に対するユーザーのリサイズ操作により style 属性 に加えられた変更は リセットされません。

例:

例えば、iframe をスクロール可能かつリサイズ可能にするには、 次のルールを使用できます。

iframe,object[type^="text/"],
object[type$="+xml"],object[type="application/xml"] {
  overflow:auto;
  resize:both;
}

5.2. オーバーフローの省略記号: text-overflow プロパティ

名前: text-overflow
値: clip | ellipsis
初期値: clip
適用対象: ブロックコンテナー
百分率: N/A
算出値: 指定どおり 指定されたキーワード
正規順序: 文法どおり
アニメーション型: 離散

このプロパティは、ブロックコンテナー要素(「ブロック」)の インライン進行方向にある 行ボックスの終端 をインラインコンテンツがオーバーフローするときのレンダリングを指定します。 ブロックの overflowvisible 以外である場合に適用されます。

テキストがオーバーフローするのは、 折り返しが禁止されている場合(例: white-space: nowrap) や、1 語がボックスに収まらないほど長い場合などです。 各値の意味は次のとおりです。

clip
ブロックコンテナー要素からはみ出したインラインコンテンツを切り詰めます。 文字は部分的にしかレンダリングされない場合があります。
ellipsis
切り詰められたインラインコンテンツを表すために、三点リーダ(U+2026)をレンダリングします。 実装では、言語・スクリプト・書字方向により適した 他の省略記号を代用してもよく、 省略記号が利用できない場合には 3 つのドット "..." を使用してもかまいません。

このプロパティ定義では可読性のため「文字 (character)」という用語を使用していますが、 実装上は「書記素クラスター」[UAX29] を意味します。

ellipsis 値に対しては、 実装は、行の 終端 端で ellipsis を収めるために必要な文字や 原子的インラインレベル要素 を非表示にしなければなりません。 そして、残ったインラインコンテンツの 終端 端に 直ちに隣接して ellipsis を配置します。 行の最初の文字または 原子的インラインレベル要素 は、 省略されるのではなく切り詰められなければなりません。

Bidi における ellipsis の例

これらの例は、双方向テキスト状況において、 どの文字が ellipsis のために隠されるか(つまり行の視覚的な終端側にある文字)が どれであるかを示します。

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

ellipsis の詳細

ellipsis とユーザーインタラクション

例:

text-overflow の例

これらの例は、text-overflow を持ち、 テキストがその寸法からはみ出すブロックコンテナー要素の設定を示します。

div 向け CSS の例:

div {
  font-family:Helvetica,sans-serif; line-height:1.1;
  width:3.1em; padding:.2em; border:solid .1em black; 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>
3 つ目は、省略されたテキストを表す ellipsis を持つ、類似のボックス。
CSS IS AWESOME, YES
<div style="text-overflow:ellipsis; overflow:hidden">
NESTED
  <p>PARAGRAPH</p>
WON'T ELLIPSE.
</div>
4 つ目は、匿名ブロックボックスの等価性および ネストされた要素には継承されないことを示す段落を入れたボックス。
NESTED

PARAGRAPH

WON’T ELLIPSE.

注: ellipsis が配置される行の側は、 ブロックの direction に依存します。 例えば、overflow: hidden かつ右から左方向 (direction: rtl)のブロックでは、 インラインコンテンツは 左側 でクリップされるため、 text-overflow の ellipsis も 左側 に配置されて、 切り詰められたコンテンツを表すことになります。

ellipsis とスクロールインターフェイスの相互作用

この節は、text-overflow が text-overflow:clip 以外(クリップ以外の text-overflow) であり、かつ overflow が scroll である要素に適用されます。

要素の text-overflow がクリップ以外で、 そのテキストのインライン進行方向に対する overflow が scroll であり、 UA がスクロール機構(例: 要素にスクロールバーがある、タッチ操作でスクロールできる、など)を提供する場合、 より良いユーザー体験のために追加の実装上の詳細があります。

要素がスクロールされると(例: ユーザー操作や DOM 操作によって)、 その要素のコンテンツのより多くの部分が表示されます。 text-overflow の値は、その要素のコンテンツがより多く表示されるかどうかに影響すべきではありません。 クリップ以外の text-overflow が設定されている場合、 追加のコンテンツがビューにスクロールされるにつれて、 実装は収まる範囲であれば追加コンテンツを表示し、 クリップされるはずのコンテンツ(もしくは ellipsis/文字列を収めるために必要なコンテンツ)のみを 切り詰めるべきです。 そして要素がコンテンツの端を表示できるまで十分にスクロールされたときには、 省略記号/文字列ではなく、そのコンテンツを表示すべきです。

例:

この例では、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.

スクロール中は、実装は ellipsis のレンダリングを調整してもかまいません (例えば、行端ではなくボックス端に揃えるなど)。

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

6.1. ポインター操作

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

名前: cursor
値: [<cursor-image>,]* <cursor-predefined>
初期値: auto
適用対象: すべての要素
継承: する
百分率: N/A
算出値: 指定どおり(ただし相対 URL は絶対 URL に変換される)
正規順序: 文法どおり
アニメーション型: 離散

このプロパティは、カーソルのホットスポットが要素の border edge の内側にあるときに、 ポインティングデバイス用にどの種類のカーソルを表示するかを指定します。

注: CSS Backgrounds 3 § 4.1 曲線半径: border-radius プロパティ によれば、 border edgeborder-radius の影響を受けます。

要素が重なり合っている場合、 どの要素がカーソルの種類を決定するかはヒットテストに基づきます。 カーソルを決定する要素とは、この位置からクリックを行った場合に クリックを受け取る要素です。

注: ヒットテストの詳細は 本仕様の対象外です。 ヒットテストは将来の CSS または HTML の改訂で定義されることが期待されます。

ユーザーエージェントは、スクロールバー、リサイズハンドル、その他のネイティブ UI ウィジェット (一部の UA 固有のフォーム要素実装内で使用されるものなど)といった ネイティブなユーザーエージェントコントロール上では、 cursor プロパティを無視してもかまいません。 また、ページが応答していないときのビジー表示や、 テキスト選択中のテキストカーソルなど、 UA のユーザーインターフェイスの状態を示すために、 cursor プロパティを無視して任意のカーソルを表示してもかまいません。

注: [HTML] では、 イメージマップに関する特別な扱いcursor プロパティについて定義されています。

各値の意味は次のとおりです。

<cursor-image>
cursor プロパティの最初の(任意の)構成要素は、 画像ベースのカーソルのリストです。 ユーザーエージェントがあるカーソルを処理できない場合は、 2 番目のカーソルを試さなければなりません。以下同様です。 これらの著者定義カーソルをいずれも処理できない場合は、 リスト末尾のキーワードベースのカーソルを使用しなければなりません。

<cursor-image> の構文は次のとおりです。

<cursor-image> = <url> <number>{2}?

ユーザーエージェントは、URL で指定されたリソースからカーソルを取得します。 準拠したユーザーエージェントは、 <url> の代わりに、 そのスーパーセットである <image> をサポートしてもかまいません。

UA は、次の画像ファイル形式をサポートしなければなりません。

さらに UA は、次の画像ファイル形式をサポートすべきです。

UA は、追加のファイル形式(SVG を含む)もサポートしてよく、 それらが 自然なサイズ を持たない場合でも、 secure static mode または secure animated mode ([SVG2]) であってよいとされています。

注: CSS ワーキンググループは当初、 自然なサイズを持つかどうかに関わらず すべての SVG をサポートする意図でした。 自然なサイズを持たない SVG のサポートは、 実装の欠如により必須から任意へと格下げされました。

注: 本仕様書執筆時点(2015 年春)では、 一般的なデスクトップブラウザーでカーソルにサポートされているファイル形式は、 Microsoft が設計した .ico および .cur ファイル形式のみです。 これらの形式についてはオープンな仕様が存在しないため、 規範的な要件にはできませんが、 レガシーコンテンツとの互換性のため、 UA はこれらをサポートすることが推奨されます。 これらの形式についての情報は Wikipedia に記載があります。

default object size(既定オブジェクトサイズ)は、 UA の OS 上で一般的なカーソルのサイズに基づいて決定される、 UA 定義のサイズです。

concrete object size は、 既定のサイズ決定アルゴリズム を用いて決定されます。 OS が、ある上限サイズを超えるカーソルを レンダリングできない場合には、 その上限サイズを超えるカーソルは その OS がサポートするサイズ範囲内に収まるように縮小されなければなりません。 その際、自然なアスペクト比 を持つ場合は、 それを維持しなければなりません。

任意の 2 つの <number> 値は、 画像の左上からのオフセットとして、 画像内の正確なカーソル位置(ホットスポット)の X および Y 座標を与えます。

注: 本仕様は、 各種 <image> 型の座標系の定義方法については扱わず、 [CSS4-IMAGES] に委ねます。

値が省略された場合は、 画像リソース内で定義された自然なホットスポットが使用されます。 自然なホットスポットがない場合は、 画像の左上隅が使用されます(0 0 が指定されたかのように扱われます)。

ホットスポットの X または Y 座標 (明示的に指定された場合でも画像から取得される場合でも)が カーソル画像の外に出ている場合は、 それぞれ独立にクランプして収まるようにしなければなりません。

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

§ 6.1.1.1 Predefined Cursors に、 すべての <cursor-predefined> キーワードと その意味が記載されています。

Example: cursor のフォールバック

いくつかの cursor 値を使った例を示します。

:link,:visited {
    cursor: url(example.svg#linkcursor),
            url(hyper.cur),
            url(hyper.png) 2 3,
            pointer;
}

この例では、訪問済みかどうかに関わらず、すべてのハイパーリンクに対して 外部の SVG カーソル ([SVG11] 16.8.3 節) を設定しています。 SVG カーソルをサポートしない UA は、単に次の値にスキップし、 "hyper.cur" カーソルを使用しようとします。 そのカーソル形式もサポートされていない場合は、 明示的なホットスポット付きの "hyper.png" カーソルを使用しようとします。 さらに、これらの画像カーソル形式をいずれもサポートしない場合には、 最後の値までスキップして、 pointer カーソルをレンダリングすることになります。

6.1.1.1. 事前定義カーソル

<cursor-predefined> 生成規則は、 ほとんどの OS に存在する多くの事前定義カーソルを包含します。 その構文は次のとおりです。

<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
単純な十字線(たとえば「+」記号に似た短い線分)です。 二次元ビットマップ選択モードを示すためによく使用されます。
text
選択可能なテキストであることを示します。 多くの場合、縦向きの I ビームとして描かれます。 UA は、縦書きテキストなどに対して、 自動的に横向きの I ビーム (例: vertical-text キーワードと同じ)を 表示してもよく、 さらに言えば、あらゆる角度でレンダリングされたテキストに対して、 その角度に応じた I ビーム/カーソルを表示してもかまいません。
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
列(item/column)が水平方向にリサイズ可能であることを示します。 多くの場合、左右を向いた矢印に、その間を区切る縦棒が描かれます。
row-resize
行(item/row)が垂直方向にリサイズ可能であることを示します。 多くの場合、上下を向いた矢印に、その間を区切る横棒が描かれます。
all-scroll
任意の方向にスクロール可能であることを示します。 多くの場合、上下左右を向いた矢印に中央の点が付いた形で描かれます。
ズーム用カーソル
zoom-in
zoom-out
何かをズームイン/ズームアウト(拡大/縮小)できることを示します。 多くの場合、中央に「+」または「-」が描かれた虫眼鏡としてレンダリングされ、 それぞれ zoom-inzoom-out を表します。
6.1.1.2. キャンバスのカーソル

文書 キャンバス (canvas) は、 文書が描画される無限の面です [CSS2]。 キャンバスに対応する要素は存在しないため、 いずれの要素上にもないときのカーソルをスタイル付けできるようにするには、 キャンバスのカーソルはルート要素のカーソルを再利用します。 ただし、ルート要素にボックスが生成されない場合 (例えばルート要素が display: none の場合)には、 キャンバスのカーソルはプラットフォーム依存の既定カーソルになります。

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

6.2. 挿入キャレット

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

名前: caret-color
値: auto | <color>
初期値: auto
適用対象: すべての要素
継承: する
百分率: N/A
算出値: auto に対する算出値は auto である。 currentColor の算出値は currentColor である(currentcolor を参照)。 その他の <color> 値については color プロパティを参照。
正規順序: 文法どおり
アニメーション型: 算出値による
auto
ユーザーエージェントは currentColor を使用すべきです。 ユーザーエージェントは、キャレットの色が周囲のコンテンツに対して良好な視認性とコントラストを 保つように、自動的に色を調整してもかまいません。 その際、currentColor や背景色、影などに基づいて調整してもよいでしょう。
<color>
挿入キャレットは、指定された色で描画されます。

キャレットとは、ユーザーがテキスト(および状況によっては他のコンテンツ)を挿入する位置を示す 視覚的なインジケータです。 このプロパティは、そのインジケータの色を制御します。

注: キャレットの形状や点滅に関しては、 本機能の対象外であり、未定義です。

注: UA には「キャレット」とみなされる 追加の要素が存在する場合があります。 例えば、一部の UA では「ナビゲーションキャレット」を表示でき、 これは編集可能ではないテキスト内でも移動できる、挿入キャレットに似たものですが、 機能的にはキャレットです。 一方、cursor プロパティが auto のときに テキスト上に表示されるカーソル画像や、 cursor プロパティが text または vertical-text のときに表示されるものは、 見た目がキャレットに似ていることはあってもキャレットではなく、 カーソルです。

Example: caret-color:#00aacc; を指定した textarea

6.3. キーボード制御

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

「ime-mode」は一部のブラウザーにおいてある程度実装されていますが、 問題が多く、本仕様により正式に廃止とされたプロパティです。

ユーザーエージェントは ime-mode プロパティを サポートすべきではありません。

著者は ime-mode プロパティを使用してはなりません。

ユーザーは、悪いサイトやレガシー実装を回避するための修復ユースケースに限り、 user スタイルシートのルールのような形で ime-mode プロパティを使用してもかまいません。例:

例: ユーザー設定

input[type=password] {
  ime-mode: auto !important;
}

この例の CSS を user スタイルシートファイルに置くことで、 パスワード入力フィールドが既定の挙動を取るよう強制することができます。

本仕様は、レガシー ime-mode 実装の機能や、 それらが具体的に何をサポートしているかを文書化しようとはしません。 そのような方向性を追求・推奨するのは妥当ではないと判断しているためです。

注: 著者は、UA がより良い入力ユーザー体験を提供できるように情報を与えるため、 次のような [HTML] 機能を 使用すべきです。

付録 A: 謝辞

この付録は 参考 です。

この仕様は 1999 年から現在に至るまで、主として Tantek Çelik によって編集・執筆されました。 当初は Microsoft を代表して、その後は招待専門家として、 そして最近では Mozilla を代表して作業しています。

Florian Rivoal(Bloomberg を代表して本仕様に取り組み)には、 www-style メールからの issue の記録、 解決案と変更提案、 特に box-sizing プロパティについての 大幅に改善された詳細の調査・執筆に対して感謝します。

以下の方々からのフィードバックおよび貢献にも感謝します。 Rossen AtanassovTab AtkinsL. David BaronBert BosMatthew BrealeyRick ByersAda ChanJames CraigMichael CooperAxel DahmenMichael DayMicah DubinkoElika E.Steve FalkenburgAndrew FedonioukAl GilmanIan HicksonBjoern HoehrmannAlan HoganDavid HyattRichard IshidaSho KuwamotoYves LafonStuart LangridgeSusan LeschPeter LinssKang-Hao LuMasayuki NakanoMats PalmgrenBrad PettitChris RebertFrançois RemyAndrey RybkaSimon SapinAlexander SavenkovSebastian SchnitzenbaumerLea VerouEtan WexlerDavid WoolleyFrank YanBoris Zbarsky、 および Domel

付録 B: 変更点

この付録は 参考 です。

2018 年 6 月 21 日の勧告 (REC) からの変更点

2017 年 3 月 2 日の候補勧告 (CR) からの変更点

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

W3C TAG は、 仕様編集者が参考として回答するための Self-Review Questionnaire: Security and Privacy を作成中です。

Questions to Consider に従い:

  1. この仕様は個人を特定できる情報を扱いますか?

    いいえ。

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

    いいえ。

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

    いいえ。

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

    いいえ。

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

    いいえ。

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

    いいえ。

  7. この仕様は、オリジンにユーザーのデバイス上のセンサーへのアクセスを許しますか?

    いいえ。

  8. この仕様は、オリジンにユーザーのローカルな計算環境の一部へのアクセスを許しますか?

    いいえ。

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

    いいえ。

  10. この仕様は、一時的な識別子を Web に公開しますか?

    いいえ。

  11. この仕様は、第一者コンテキストと第三者コンテキストで挙動を区別しますか?

    いいえ。

  12. この仕様は、ユーザーエージェントの「シークレット(プライベート)モード」において どのように動作すべきですか?

    通常と変わりません。

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

    いいえ。

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

この付録は 参考 です。

W3C TAG は、 仕様編集者が参考として回答するための Self-Review Questionnaire: Security and Privacy を作成中です。

Questions to Consider に従い:

  1. この仕様は、新しいスクリプトの実行/読み込みメカニズムを有効にしますか?

    読み込みについては「はい」、実行については「いいえ」です。 cursor プロパティは <image> 値を受け付け、 それには読み込むべき URL が含まれることがあります。 これらはスクリプトを含む SVG 文書である場合もありますが、 本仕様はスクリプトを実行してはならないと定めています。

  2. この仕様は、オリジンにユーザーエージェントのネイティブ UI を ある程度制御させますか?

    はい。 cursor および caret-color プロパティにより、 ページは UA のネイティブ UI におけるカーソルやテキスト挿入キャレットの表示を変更できます。 さらに、outline-style プロパティの auto 値(および outline ショートハンド)により、 ページは任意の要素の周囲に、 ネイティブ UI によるフォーカスアウトライン表示に相当するものを表示できるようになります。

  3. この仕様は、既定のセキュリティ特性を弱めることを許しますか?

    いいえ。

付録 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 無指定、または size=1 - ポップアップメニュー */
  display: inline-block;
  height: 1em;
  overflow: hidden;
}

select[size]:active {
/* size が 1 より大きい active な 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, これは説明的な注記です。

「Advisement」は特別な注意を促すために装飾された規範的な節であり、下記のように<strong class="advisement">によって他の規範文と区別されます。 UA はアクセシブルな代替手段を必ず提供しなければなりません(MUST)。

適合クラス

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

スタイルシート
CSSスタイルシート
レンダラー
UA。 スタイルシートのセマンティクスを解釈し、それらを使った文書をレンダリングするもの。
オーサリングツール
UA。 スタイルシートを書き出すもの。

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

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

オーサリングツールが本仕様に適合するとは、汎用CSS文法およびこのモジュールで定義された各機能の個別文法に従って構文的に正しいスタイルシートを書き出し、さらにこのモジュールで説明されているスタイルシートの他の適合要求も満たしている場合を指します。

部分実装

将来互換なパース規則を利用してフォールバック値を指定できるように、CSSレンダラーは適切に無視すべきatルール・プロパティ・プロパティ値・キーワードその他の構文構成子で、有効に扱えないものを必ず無効として扱う必要があります。特に、ユーザーエージェントは、1つの複数値プロパティ宣言の中で未サポートな構成値のみを選択的に無視し、サポートされている値だけを評価してはなりません。いずれかの値が無効(未サポートな値は必ず無効)と見なされる場合、CSSはその宣言全体を無視することを要求します。

不安定・独自機能の実装について

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

非実験的な実装

仕様がCandidate Recommendation段階に達したら、非実験的な実装が可能になります。実装者は、仕様通りに正しく実装されていることを示せるCRレベルの機能について、接頭辞なしの実装をリリースするべきです。

CSSの実装間の互換性を確立・維持するため、CSSワーキンググループは非実験的なCSSレンダラーに対し、接頭辞なしで任意のCSS機能をリリースする前に実装レポート(必要に応じてテストケースも)をW3Cに提出するよう求めます。W3C提出済みのテストケースは、CSSワーキンググループによるレビューおよび修正の対象となります。

テストケースや実装レポートの提出方法など、更なる情報はCSSワーキンググループのWebサイト https://www.w3.org/Style/CSS/Test/ に記載されています。ご質問は、 public-css-testsuite@w3.org メーリングリストまでお送りください。

索引

本仕様で定義される用語

参照で定義される用語

参考文献

規範的参考文献

[CSS-BACKGROUNDS-3]
Elika Etemad; Brad Kemper. CSS Backgrounds and Borders Module Level 3. 2024年3月11日. CRD. URL: https://www.w3.org/TR/css-backgrounds-3/
[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-COLOR-4]
Tab Atkins Jr.; Chris Lilley; Lea Verou. CSS Color Module Level 4. 2026年3月31日. CRD. URL: https://www.w3.org/TR/css-color-4/
[CSS-COLOR-5]
Chris Lilley; Una Kravets; Lea Verou. CSS Color Module Level 5. 2026年3月25日. WD. URL: https://www.w3.org/TR/css-color-5/
[CSS-IMAGES-3]
Tab Atkins Jr.; Elika Etemad; Lea Verou. CSS Images Module Level 3. 2023年12月18日. CRD. URL: https://www.w3.org/TR/css-images-3/
[CSS-OVERFLOW-3]
Elika Etemad; Florian Rivoal. CSS Overflow Module Level 3. 2025年10月7日. 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. 2024年3月22日. CRD. URL: https://www.w3.org/TR/css-values-3/
[CSS-VALUES-4]
Tab Atkins Jr.; Elika Etemad. CSS Values and Units Module Level 4. 2024年3月12日. WD. URL: https://www.w3.org/TR/css-values-4/
[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; 他. Cascading Style Sheets Level 2 Revision 1 (CSS 2.1) Specification. 2011年6月7日. REC. URL: https://www.w3.org/TR/CSS2/
[HTML]
Anne van Kesteren; 他. HTML Standard. Living Standard. URL: https://html.spec.whatwg.org/multipage/
[PNG]
Chris Lilley; 他. Portable Network Graphics (PNG) Specification (Third Edition). 2025年6月24日. REC. URL: https://www.w3.org/TR/png-3/
[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
[SVG11]
Erik Dahlström; 他. Scalable Vector Graphics (SVG) 1.1 (Second Edition). 2011年8月16日. REC. URL: https://www.w3.org/TR/SVG11/
[SVG2]
Amelia Bellamy-Royds; 他. Scalable Vector Graphics (SVG) 2. 2018年10月4日. CR. URL: https://www.w3.org/TR/SVG2/
[UAX29]
Josh Hadley. Unicode Text Segmentation. 2025年8月17日. Unicode Standard Annex #29. URL: https://www.unicode.org/reports/tr29/tr29-47.html
[WEB-ANIMATIONS-1]
Brian Birtles; 他. Web Animations. 2023年6月5日. WD. URL: https://www.w3.org/TR/web-animations-1/

参考文献(参考)

[CSS-CASCADE-4]
Elika Etemad; Tab Atkins Jr.. CSS Cascading and Inheritance Level 4. 2022年1月13日. CR. URL: https://www.w3.org/TR/css-cascade-4/
[CSS-GAPS-1]
Kevin Babbitt. CSS Gap Decorations Module Level 1. 2026年2月27日. WD. URL: https://www.w3.org/TR/css-gaps-1/
[CSS-PSEUDO-4]
Elika Etemad; Alan Stearns. CSS Pseudo-Elements Module Level 4. 2025年6月27日. WD. URL: https://www.w3.org/TR/css-pseudo-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/
[CSS1]
Håkon Wium Lie; Bert Bos. Cascading Style Sheets, level 1. 2018年9月13日. REC. URL: https://www.w3.org/TR/CSS1/
[CSS4-IMAGES]
Elika Etemad; Tab Atkins Jr.; Lea Verou. CSS Images Module Level 4. 2025年9月30日. WD. URL: https://www.w3.org/TR/css-images-4/

プロパティ索引

Name Value Initial Applies to Inh. %ages Anim­ation type Canonical order Com­puted value
box-sizing content-box | border-box content-box width または height を受け付けるすべての要素 no N/A discrete per grammar specified value
caret-color auto | <color> auto すべての要素 yes N/A colorby computed value per grammar autoの算出値はauto; currentColorの算出値はcurrentColor(currentcolor参照); 他の<color>値はcolorプロパティを参照。
cursor [<cursor-image>,]* <cursor-predefined> auto すべての要素 yes N/A discrete per grammar 相対URLは絶対URLに変換された上で指定どおり
outline [ <'outline-color'> || <'outline-style'> || <'outline-width'> ] 個別プロパティを参照 すべての要素 no N/A 個別プロパティを参照 per grammar 個別プロパティを参照
outline-color <color> | invert invert すべての要素 no N/A colorby computed value per grammar invert の算出値は invert; currentColor の算出値は currentColor(currentcolor参照); 他の <color> 値は color プロパティを参照。
outline-offset <length> 0 すべての要素 no N/A lengthby computed value per grammar 絶対単位 (px または物理単位) の <length> 値。absolute length
outline-style auto | <border-style> none すべての要素 no N/A discrete per grammar 指定どおり
outline-width <line-width> medium すべての要素 no N/A lengthby computed value per grammar absolute length, snapped as a border width; outline-style が none の場合は 0。
resize none | both | horizontal | vertical none visible 以外の overflow を持つ要素、scroll container であるもの、および画像・動画・iframe などの任意の置換要素 no N/A discrete per grammar 指定キーワードどおり
text-overflow clip | ellipsis clip ブロックコンテナー no N/A discrete per grammar 指定キーワードどおり