CSS 論理プロパティおよび値 レベル 1

W3C 作業草案,

このバージョン:
https://www.w3.org/TR/2018/WD-css-logical-1-20180827/
最新公開バージョン:
https://www.w3.org/TR/css-logical-1/
編集者草案:
https://drafts.csswg.org/css-logical-1/
以前のバージョン:
課題追跡:
仕様内でのインライン
GitHub Issues
編集者:
(Microsoft)
Elika J. Etemad / fantasai (招待専門家)
この仕様への編集提案:
GitHub Editor

概要

このモジュールは、物理的な方向や寸法のマッピングではなく、論理的な方向や寸法のマッピングによってレイアウトを制御する能力を著者に提供する論理プロパティおよび値を導入します。このモジュールは、[CSS21] で定義されている機能に対する論理プロパティおよび値を定義します。これらのプロパティは、対応する物理プロパティの書字方向依存の同等物です。

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

この文書の位置づけ

このセクションは、公開時点でのこの文書の位置づけを説明します。他の文書が本書に取って代わる場合があります。現在のW3C出版物とこの技術レポートの最新の改訂版は、W3C技術レポートインデックス https://www.w3.org/TR/ で確認できます。

作業草案として公開されていることは、W3C会員による承認を意味するものではありません。この文書は草案であり、随時更新、置換、廃止される場合があります。進行中の作業以外の引用には適していません。

この仕様に関する議論は、GitHub Issues で行うことを推奨します。課題を提出する際は、タイトルに「css-logical」という文言を含めてください。例:「[css-logical] …コメントの要約…」。全ての課題やコメントは アーカイブ されており、過去のアーカイブ もあります。

この文書は、CSS作業グループStyle Activityの一部)によって作成されました。

この文書は、W3C特許ポリシーの下で運用されているグループによって作成されました。W3Cは、グループの成果物に関連して公開された特許開示の一覧を管理しています。そのページには特許の開示方法も記載されています。ある個人が、必須クレームを含むと考える特許について実際に知っている場合は、W3C特許ポリシー第6節に従って情報を開示する必要があります。

この文書は、2018年2月1日付W3Cプロセス文書に従って管理されています。

1. はじめに

注: 書字モードの適切な導入については [css-writing-modes-4] を参照してください。本モジュールではその用語に慣れていることを前提とします。

異なる書記体系は異なる方向で書かれるため、 さまざまな 書字モード が存在します: 左から右、上から下; 右から左、上から下; 下から上、右から左; など。 ページや行の「開始」のような論理的な概念は、 行の「上部」や段落の「左端」のような物理的な概念と異なる対応を持ちます。 レイアウトのいくつかの側面は実際には書字方向に依存しており、 ページが別の体系に翻訳された場合に変化します; 他のものは本質的にページの物理的な向きに依存しています。

例えば、 英語ではリスト、見出し、段落は通常左揃えですが、 実際には開始位置に揃えられています。アラビア語では同じ構成要素が右揃えになり、 多言語文書では両方の書記体系に対応する必要があります。

次のコード例は、論理構文を使うことで 異なる書記体系で動作するコードを書きやすくなることを示しています:

下記のコードを互換性のあるブラウザーでレンダリングした様子
<blockquote dir="auto">Quotation in English</blockquote>
<blockquote dir="auto">اقتباس في العربية</blockquote>
blockquote {
    text-align: start; /* ラテン語では左、アラビア語では右 */
    margin-inline-start: 0px; /* ラテン語ではmargin-left、アラビア語ではmargin-right */
    border-inline-start: 5px solid gray; /* ラテン語ではborder-left、アラビア語ではborder-right */
    padding-inline-start: 5px; /* ラテン語ではpadding-left、アラビア語ではpadding-right */
}

文書には論理プロパティと物理プロパティの両方が必要な場合があります。例えば ページ上のボタンのドロップシャドウは常に一貫性を保つ必要があるため、 そのオフセットは視覚的な観点や物理的な方向に基づいて選択され、 書字体系によって変化しません。

CSSは元々物理座標のみをコントロールして設計されたため、 本モジュールはテキストフロー依存の同等プロパティを導入し、 CSSスタイルシートの宣言を フロー依存 の用語で表現できるようにします。 同等プロパティのマッピングとカスケーディング、 CSS2.1と同等の新しいプロパティと値、 それらの構文を導出するための原則を定義します。 今後のCSS仕様は両座標セットをプロパティと値の定義に取り入れることが期待されており、 本モジュールでは新しいCSS機能の フロー依存 バリアントの導入は追跡しません。

CSS Writing Modes抽象ボックス用語 セクションでは、 フロー依存と物理用語とのマッピング方法を定義しています。 このマッピングは、 used valueswriting-modedirection に依存し、 フロー依存キーワードやプロパティの解釈を制御します。

典型的な英語テキストレイアウトにおける物理用語とフロー依存用語の対応関係
典型的な中国語テキストレイアウトにおける物理用語とフロー依存用語の対応関係

注: text-orientation: upright との組み合わせにより、 used directioncomputed valueswriting-mode および text-orientation に依存します。

不安定な事項 本モジュールの一部の実装は Webで CSS Writing Modes を出荷するために (HTMLのデフォルトスタイルを正しく実装するため) 実質的に必要となるため、 CSSWGは §2 フロー依存値: block-start, block-end, inline-start, inline-end および §4 フロー依存ボックスモデルプロパティ の必要な機能について 出荷を承認しました。 (詳細については FPWD発表 を参照してください。)

ただし、いくつか重要な未解決の課題があります:

これらの課題についてのコメント、提案、ユースケースを歓迎します。 GitHubで提出するか、@csswgにツイートするか、www-style@w3.org に送信してください。

2. フロー依存値: block-start, block-end, inline-start, inline-end

物理方向のキーワード値 (top, bottom, left, または right) を受け付けるプロパティは 適切な フロー依存 方向キーワードも受け付けるように再定義されています。 この場合、 フロー依存値は対応する物理値の代わりに利用できます。 複数のキーワードを指定できるプロパティでは、 フロー依存値と物理値の組み合わせは許可されません (将来の仕様で別途指定されない限り)。

プロパティは一次元または二次元のいずれかです。 文脈によって一次元に限定される場合、 フロー依存キーワードは省略形になります。

2.1. caption-side プロパティ用の論理値

名称: caption-side
新しい値: inline-start | inline-end
算出値: 指定通り

これら2つの値は left および right の値を caption-side でサポートする実装のみに追加されます。 left および right の値自体は 行依存 として定義されます。

既存の top および bottom の値は慣習的に再定義され、 それぞれ block-start および block-end 側に割り当てられます。

このプロパティのマッピングはキャプションの 書字モード (つまり テーブルラッパーボックス)の 包含ブロック を使います。

2.2. float および clear プロパティ用のフロー依存値

名称: float, clear
新しい値: inline-start | inline-end
算出値: 指定通り

これらのプロパティのマッピングは要素の 書字モード包含ブロック を使います。

注: これらのプロパティはCSS2では一次元ですが、 二次元に拡張される予定があり、 そのため省略されていない フロー依存 キーワードが与えられています。

2.3. text-align プロパティ用のフロー依存値

名称: text-align
新しい値: start | end
算出値: 指定通り

これらの値は [css-text-3] で規定されています。

2.4. resize プロパティ用のフロー依存値

名称: resize
新しい値: block | inline
算出値: 指定通り

3. フロー依存ページ分類

CSSでは、すべてのページはユーザーエージェントによって左ページまたは右ページに分類されます。[CSS21] ただし、スプレッド内で最初のページがどちらになるかは、ページ進行が左から右か右から左かによって異なります。

ページ分割の制御をスプレッドの左側や右側ではなく、 スプレッドのより早い側または遅い側のページに対して行えるようにするため、 本モジュールは page-break-after および page-break-before プロパティに対して次の追加キーワードを導入します [CSS21]:

recto
左から右のページ進行では right、 右から左のページ進行では left と同等です。
verso
左から右のページ進行では left、 右から左のページ進行では right と同等です。

これらの値は指定通りに算出され、 [css-break-3] でさらに定義されています。

著者は通常ページ番号を物理的な配置で配置しますが、 ヘッダーの内容はスプレッド内のどちらが先かにより慣習に従う場合があります。 そのため、次のフロー依存 ページセレクター も追加され、 フロー依存ページ選択をサポートします:

:recto
左から右のページ進行では ':right'、 右から左のページ進行では ':left' と同等です。
:verso
左から右のページ進行では ':left'、 右から左のページ進行では ':right' と同等です。

フロー依存ページセレクターの詳細度は ':left' および ':right' ページセレクターと同じです。

4. フロー依存ボックスモデルプロパティ

この仕様は、フロー依存物理ボックスモデルプロパティの同等物となる 新しいCSSプロパティを導入します。 関連するフロー依存のロングハンドプロパティと それに対応する物理プロパティのセットは、 論理プロパティグループ を構成します。 例えば、padding-* プロパティ群は 1つの 論理プロパティグループ を構成し、 margin-* プロパティ群は別の 論理プロパティグループ を構成します。 など。 方向や軸のマッピングの種類 (フロー依存または物理)は プロパティの マッピングロジック と呼ばれます。

注: 各ロングハンドプロパティは、最大で1つの 論理プロパティグループ に属します。

指定値フロー依存プロパティと 物理プロパティで異なりますが、 フロー依存プロパティと物理プロパティは算出値を共有します。 どのプロパティペアが算出値を共有するかは、 要素の writing-modedirectiontext-orientation の算出値によって決まります。

注: 要素自身の writing-mode に基づいて 各 フロー依存プロパティを 物理プロパティにマッピングすることで カスケード計算が単純化され、 著者にとって分かりやすいモデルとなります。 しかし多くの場合問題があり、 例えば この議論 を参照してください。 要素の writing-mode が親と異なる場合、 著者は正しいマッピング動作を得るために ネストした要素を使う必要があるかもしれません。

フロー依存プロパティと物理プロパティの両方を入力とする算出値は、 両方の宣言にCSSカスケードを適用することで決定されます。 上書きは宣言がフロー依存か物理かではなく、 CSSカスケードの規則 [css-cascade-3] のみで決まります。

このため実装はCSS宣言ブロック内の宣言の相対順序を維持する必要がありますが、 これは以前のCSSカスケードでは要求されていませんでした。

例:次のルールの場合
p {
  margin-inline-start: 1px;
  margin-left: 2px;
  margin-inline-end: 3px;
}

算出 writing-modehorizontal-tb、 算出 directionltr の段落の場合、 margin-left の算出値は 2px です。 この writing-modedirection では margin-inline-startmargin-left が算出値を共有し、 margin-left の宣言が margin-inline-start の宣言の後にあるためです。 しかし算出 directionrtl の場合、 margin-left の算出値は 3px となります。 margin-inline-endmargin-left が算出値を共有し、 margin-inline-end の宣言が margin-left の宣言の後にあるためです。

[CSSOM] のような算出値を返すAPI (getComputedStyle() など)は、 そのようなプロパティの同等ペアに対して同じ値を返さなければなりません。

フロー依存プロパティの継承順序とマッピングショートハンドと論理プロパティの相互作用 について未解決の課題があります。

4.1. 論理的高さ・幅: block-sizeinline-size プロパティ

名称: block-size, inline-size
値: <‘width’>
初期値: auto
適用対象: width および height と同じ
継承: なし
パーセンテージ: 対応する物理プロパティと同様
算出値: widthheight と同じ
正準順序: 文法どおり
アニメーション可能: widthheight と同じ

これらのプロパティは widthheight プロパティに対応します。 マッピングは要素の writing-mode に依存します。

名称: min-block-size, min-inline-size
値: <‘min-width’>
初期値: 0
適用対象: width および height と同じ
継承: なし
パーセンテージ: 対応する物理プロパティと同様
算出値: min-widthmin-height と同じ
正準順序: 文法どおり
アニメーション可能: min-widthmin-height と同じ

これらのプロパティは min-widthmin-height プロパティに対応します。 マッピングは要素の writing-mode に依存します。

名称: max-block-size, max-inline-size
値: <‘max-width’>
初期値: none
適用対象: width および height と同じ
継承: なし
パーセンテージ: 対応する物理プロパティと同様
算出値: max-widthmax-height と同じ
正準順序: 文法どおり
アニメーション可能: max-widthmax-height と同じ

これらのプロパティは max-widthmax-height プロパティに対応します。 マッピングは要素の writing-mode に依存します。

4.2. フロー依存マージン: margin-block-startmargin-block-endmargin-inline-startmargin-inline-end プロパティおよび margin-blockmargin-inline ショートハンド

名称: margin-block-start, margin-block-end, margin-inline-start, margin-inline-end
値: <‘margin-top’>
初期値: 0
適用対象: margin-top と同じ
継承: なし
パーセンテージ: 対応する物理プロパティと同様
算出値: 対応する margin-* プロパティと同じ
正準順序: 文法どおり
アニメーション可能: margin-top と同じ

これらのプロパティは margin-topmargin-bottommargin-leftmargin-right プロパティに対応します。 マッピングは要素の writing-modedirectiontext-orientation に依存します。

名称: margin-block, margin-inline
値: <‘margin-left’>{1,2}
初期値: 各プロパティを参照
適用対象: 各プロパティを参照
継承: 各プロパティを参照
パーセンテージ: 各プロパティを参照
算出値: 各プロパティを参照
アニメーションタイプ: 各プロパティを参照
正準順序: 文法どおり

これら2つの ショートハンドプロパティ は、 margin-block-start & margin-block-endmargin-inline-start & margin-inline-end をそれぞれ設定します。 1つ目の値は start エッジのスタイルを表し、 2つ目の値は end エッジのスタイルを表します。 1つの値だけが指定された場合、startとendの両エッジに適用されます。

4.3. フロー依存オフセット: inset-block-startinset-block-endinset-inline-startinset-inline-end プロパティおよび inset-blockinset-inlineinset ショートハンド

名称: inset-block-start, inset-block-end, inset-inline-start, inset-inline-end
値: <‘top’>
初期値: auto
適用対象: 配置された要素
継承: なし
パーセンテージ: 対応する物理プロパティと同様
算出値: 対応する top/right/bottom/left プロパティと同じ
正準順序: 文法どおり
アニメーション可能: top と同じ

これらのプロパティは topbottomleftright プロパティに対応します。 マッピングは要素の writing-modedirectiontext-orientation に依存します。

名称: inset-block, inset-inline
値: <‘top’>{1,2}
初期値: 各プロパティを参照
適用対象: 各プロパティを参照
継承: 各プロパティを参照
パーセンテージ: 各プロパティを参照
算出値: 各プロパティを参照
アニメーションタイプ: 各プロパティを参照
正準順序: 文法どおり

これら2つの ショートハンドプロパティ は、 inset-block-start & inset-block-endinset-inline-start & inset-inline-end をそれぞれ設定します。 1つ目の値は start エッジのスタイルを表し、 2つ目の値は end エッジのスタイルを表します。 1つの値だけが指定された場合、startとendの両エッジに適用されます。

名称: inset
値: <‘top’>{1,4}
初期値: 各プロパティを参照
適用対象: 各プロパティを参照
継承: 各プロパティを参照
パーセンテージ: 各プロパティを参照
算出値: 各プロパティを参照
アニメーションタイプ: 各プロパティを参照
正準順序: 文法どおり

この ショートハンドプロパティ は、toprightbottomleft プロパティを設定します。 値は 下位プロパティmargin と同様に割り当てられます。

4.4. フロー依存パディング: padding-block-startpadding-block-endpadding-inline-startpadding-inline-end プロパティおよび padding-blockpadding-inline ショートハンド

名称: padding-block-start, padding-block-end, padding-inline-start, padding-inline-end
値: <‘padding-top’>
初期値: 0
適用対象: すべての要素
継承: なし
パーセンテージ: 対応する物理プロパティと同様
算出値: 対応する padding-* プロパティと同じ
正準順序: 文法どおり
アニメーション可能: padding-top と同じ

これらのプロパティは padding-toppadding-bottompadding-leftpadding-right プロパティに対応します。 マッピングは要素の writing-modedirectiontext-orientation に依存します。

名称: padding-block, padding-inline
値: <‘padding-left’>{1,2}
初期値: 各プロパティを参照
適用対象: 各プロパティを参照
継承: 各プロパティを参照
パーセンテージ: 各プロパティを参照
算出値: 各プロパティを参照
アニメーションタイプ: 各プロパティを参照
正準順序: 文法どおり

これら2つの ショートハンドプロパティ は、 padding-block-start & padding-block-endpadding-inline-start & padding-inline-end をそれぞれ設定します。 1つ目の値は start エッジのスタイルを表し、 2つ目の値は end エッジのスタイルを表します。 1つの値だけが指定された場合、startとendの両エッジに適用されます。

4.5. フロー依存ボーダー

4.5.1. フロー依存ボーダー幅: border-block-start-widthborder-block-end-widthborder-inline-start-widthborder-inline-end-width プロパティおよび border-block-widthborder-inline-width ショートハンド

名称: border-block-start-width, border-block-end-width, border-inline-start-width, border-inline-end-width
値: <‘border-top-width’>
初期値: medium
適用対象: すべての要素
継承: なし
パーセンテージ: 該当なし
算出値: 対応する border-*-width プロパティと同じ
正準順序: 文法どおり
アニメーション可能: border-top-width と同じ

これらのプロパティは border-top-widthborder-bottom-widthborder-left-widthborder-right-width プロパティに対応します。 マッピングは要素の writing-modedirectiontext-orientation に依存します。

名称: border-block-width, border-inline-width
値: <‘border-top-width’>{1,2}
初期値: 各プロパティを参照
適用対象: 各プロパティを参照
継承: 各プロパティを参照
パーセンテージ: 各プロパティを参照
算出値: 各プロパティを参照
アニメーションタイプ: 各プロパティを参照
正準順序: 文法どおり

これら2つの ショートハンドプロパティ は、 border-block-start-width & border-block-end-widthborder-inline-start-width & border-inline-end-width をそれぞれ設定します。 1つ目の値は start エッジの幅を表し、 2つ目の値は end エッジの幅を表します。 1つの値だけが指定された場合、startとendの両エッジに適用されます。

4.5.2. フロー依存ボーダースタイル: border-block-start-styleborder-block-end-styleborder-inline-start-styleborder-inline-end-style プロパティおよび border-block-styleborder-inline-style ショートハンド

名称: border-block-start-style, border-block-end-style, border-inline-start-style, border-inline-end-style
値: <‘border-top-style’>
初期値: none
適用対象: すべての要素
継承: なし
パーセンテージ: 該当なし
算出値: 対応する border-*-style プロパティと同じ
正準順序: 文法どおり
アニメーション可能: border-top-style と同じ

これらのプロパティは border-top-styleborder-bottom-styleborder-left-styleborder-right-style プロパティに対応します。 マッピングは要素の writing-modedirectiontext-orientation に依存します。

名称: border-block-style, border-inline-style
値: <‘border-top-style’>{1,2}
初期値: 各プロパティを参照
適用対象: 各プロパティを参照
継承: 各プロパティを参照
パーセンテージ: 各プロパティを参照
算出値: 各プロパティを参照
アニメーションタイプ: 各プロパティを参照
正準順序: 文法どおり

これら2つの ショートハンドプロパティ は、 border-block-start-style & border-block-end-styleborder-inline-start-style & border-inline-end-style をそれぞれ設定します。 1つ目の値は start エッジのスタイルを表し、 2つ目の値は end エッジのスタイルを表します。 1つの値だけが指定された場合、startとendの両エッジに適用されます。

4.5.3. フロー依存ボーダーカラー: border-block-start-colorborder-block-end-colorborder-inline-start-colorborder-inline-end-color プロパティおよび border-block-colorborder-inline-color ショートハンド

名称: border-block-start-color, border-block-end-color, border-inline-start-color, border-inline-end-color
値: <‘border-top-color’>
初期値: currentcolor
適用対象: すべての要素
継承: なし
パーセンテージ: 該当なし
算出値: 対応する border-*-color プロパティと同じ
正準順序: 文法どおり
アニメーション可能: border-top-color と同じ

これらのプロパティは border-top-colorborder-bottom-colorborder-left-colorborder-right-color プロパティに対応します。 マッピングは要素の writing-modedirectiontext-orientation に依存します。

名称: border-block-color, border-inline-color
値: <‘border-top-color’>{1,2}
初期値: 各プロパティを参照
適用対象: 各プロパティを参照
継承: 各プロパティを参照
パーセンテージ: 各プロパティを参照
算出値: 各プロパティを参照
アニメーションタイプ: 各プロパティを参照
正準順序: 文法どおり

これら2つの ショートハンドプロパティ は、 border-block-start-color & border-block-end-colorborder-inline-start-color & border-inline-end-color をそれぞれ設定します。 1つ目の値は start エッジのスタイルを表し、 2つ目の値は end エッジのスタイルを表します。 1つの値だけが指定された場合、startとendの両エッジに適用されます。

4.5.4. フロー依存ボーダーショートハンド: border-block-startborder-block-endborder-inline-startborder-inline-end プロパティおよび border-blockborder-inline ショートハンド

名称: border-block-start, border-block-end, border-inline-start, border-inline-end
値: <‘border-top-width’> || <‘border-top-style’> || <color>
初期値: 各プロパティを参照
適用対象: 各プロパティを参照
継承: 各プロパティを参照
パーセンテージ: 各プロパティを参照
算出値: 各プロパティを参照
アニメーションタイプ: 各プロパティを参照
正準順序: 文法どおり

これらのプロパティは border-topborder-bottomborder-leftborder-right プロパティに対応します。 マッピングは要素の writing-modedirectiontext-orientation に依存します。

名称: border-block, border-inline
値: <‘border-block-start’>
初期値: 各プロパティを参照
適用対象: 各プロパティを参照
継承: 各プロパティを参照
パーセンテージ: 各プロパティを参照
算出値: 各プロパティを参照
アニメーションタイプ: 各プロパティを参照
正準順序: 文法どおり

これら2つの ショートハンドプロパティ は、 border-block-start & border-block-endborder-inline-start & border-inline-end をそれぞれ設定します。

4.6. フロー依存の角丸: border-start-start-radiusborder-start-end-radiusborder-end-start-radiusborder-end-end-radius プロパティ

名称: border-start-start-radiusborder-start-end-radiusborder-end-start-radiusborder-end-end-radius
値: <‘border-top-left-radius’>
初期値: border-top-left-radius と同じ
適用対象: すべての要素
継承: なし
パーセンテージ: border-top-left-radius と同じ
算出値: 対応する物理 border-*-radius プロパティと同じ
正準順序: 文法どおり
アニメーション可能: border-top-left-radius と同じ

これらのプロパティは border-top-left-radiusborder-bottom-left-radiusborder-top-right-radiusborder-bottom-right-radius プロパティに対応します。 マッピングは要素の writing-modedirectiontext-orientation に依存します。

4.7. 4方向ショートハンドプロパティ: marginpaddingborder-widthborder-styleborder-color ショートハンド

margin、padding、border のショートハンドプロパティはデフォルトで物理プロパティの値を設定します。 しかし著者はプロパティ値の先頭に logical キーワードを指定することで、 その値が物理プロパティではなくフロー依存プロパティにマッピングされることを示すことができます。

この機能の提案された構文は 議論中であり、 ここで記載されている内容から変更される可能性が非常に高いです。 このセクションは代替案の議論を促進し、 影響を受けるプロパティを記録し、 最終的に選択される構文スイッチの解釈への影響を明確にするために草案に残しています。

次の [CSS21] のショートハンドプロパティは logical キーワードを受け付けます:

これらのプロパティの構文は、

<value-type>{1,4}

logical? <value-type>{1,4}

に置き換えることで事実上変更されます。

logical キーワードが値に指定された場合、 その後に続く値は以下のようにフロー依存ロングハンドに割り当てられます:

次の例では2つのルールは同等です:
blockquote {
  margin: logical 1em 2em 3em 4em;
}
blockquote {
  margin-block-start:  1em;
  margin-inline-start: 2em;
  margin-block-end:    3em;
  margin-inline-end:   4em;
}

5. 謝辞

Cameron McCormack, David Baron, Shinyu Murakami, Tab Atkins

6. 変更点

前回の作業草案からの変更点:

以前の編集者草案と 2017年5月18日初公開草案 の間の変更点:

適合性

文書規約

適合性要件は記述的な主張と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"として規範文とは分けて記載されます:

注:これは参考ノートです。

アドバイスは注意喚起のための規範セクションであり、 <strong class="advisement"> として他の規範文と分けて記載されます: UAはアクセシブルな代替手段を提供しなければならない。

適合性クラス

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

スタイルシート
CSS スタイルシート
レンダラー
UA(スタイルシートの意味論を解釈し、使用する文書をレンダリングするもの)。
オーサリングツール
UA(スタイルシートを書くもの)。

スタイルシートは、本モジュールで定義された構文を使うすべての記述が、 一般的なCSS構文と本モジュールで定義された各機能の個別構文に従い有効であれば、 本仕様に適合しているとみなされます。

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

オーサリングツールは、一般的なCSS構文と本モジュールの個別構文に従い文法的に正しいスタイルシートを書き、 本モジュールで記載されたスタイルシートの他のすべての適合要件も満たす場合、 本仕様に適合しているとみなされます。

CSSの責任ある実装のための要件

以下のセクションでは、CSSを責任を持って実装し、 現在および将来の相互運用性を促進するための適合要件を定義します。

部分実装

著者が前方互換のパース規則を利用してフォールバック値を指定できるよう、 CSSレンダラーは、利用可能なサポートレベルがない すべての atルール、プロパティ、プロパティ値、キーワード、その他の構文要素を無効とみなし (適切に無視)なければならない。 特に、ユーザーエージェントはサポートされていないプロパティ値を選択的に無視し、 サポートされている値のみを単一の複数値プロパティ宣言で認めてはならない: いずれかの値が無効(サポート外の値は必ず無効とみなされる)なら CSSは宣言全体を無視することを要求している。

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

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

CRレベル機能の実装

仕様が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]
Bert Bos; Elika Etemad; Brad Kemper. CSS Backgrounds and Borders Module Level 3. 2017年10月17日. CR. URL: https://www.w3.org/TR/css-backgrounds-3/
[CSS-BOX-3]
Elika Etemad. CSS Box Model Module Level 3. 2018年8月9日. WD. URL: https://www.w3.org/TR/css-box-3/
[CSS-BREAK-3]
Rossen Atanassov; Elika Etemad. CSS Fragmentation Module Level 3. 2017年2月9日. CR. URL: https://www.w3.org/TR/css-break-3/
[CSS-CASCADE-3]
Elika Etemad; Tab Atkins Jr.. CSS Cascading and Inheritance Level 3. 2016年5月19日. CR. URL: https://www.w3.org/TR/css-cascade-3/
[CSS-CASCADE-4]
Elika Etemad; Tab Atkins Jr.. CSS Cascading and Inheritance Level 4. 2016年1月14日. CR. URL: https://www.w3.org/TR/css-cascade-4/
[CSS-COLOR-3]
Tantek Çelik; Chris Lilley; David Baron. CSS Color Module Level 3. 2018年6月19日. REC. URL: https://www.w3.org/TR/css-color-3/
[CSS-DISPLAY-3]
Tab Atkins Jr.; Elika Etemad. CSS Display Module Level 3. 2018年8月9日. WD. URL: https://www.w3.org/TR/css-display-3/
[CSS-POSITION-3]
Rossen Atanassov; Arron Eicholz. CSS Positioned Layout Module Level 3. 2016年5月17日. WD. URL: https://www.w3.org/TR/css-position-3/
[CSS-SCROLL-SNAP-1]
Matt Rakow; et al. CSS Scroll Snap Module Level 1. 2018年8月14日. CR. URL: https://www.w3.org/TR/css-scroll-snap-1/
[CSS-TEXT-3]
Elika Etemad; Koji Ishii. CSS Text Module Level 3. 2017年8月22日. WD. URL: https://www.w3.org/TR/css-text-3/
[CSS-UI-3]
Tantek Çelik; Florian Rivoal. CSS Basic User Interface Module Level 3 (CSS3 UI). 2018年6月21日. REC. URL: https://www.w3.org/TR/css-ui-3/
[CSS-VALUES-4]
Tab Atkins Jr.; Elika Etemad. CSS Values and Units Module Level 4. 2018年8月14日. WD. URL: https://www.w3.org/TR/css-values-4/
[CSS-WRITING-MODES-3]
Elika Etemad; Koji Ishii. CSS Writing Modes Level 3. 2018年5月24日. CR. URL: https://www.w3.org/TR/css-writing-modes-3/
[CSS-WRITING-MODES-4]
Elika Etemad; Koji Ishii. CSS Writing Modes Level 4. 2018年5月24日. CR. URL: https://www.w3.org/TR/css-writing-modes-4/
[CSS21]
Bert Bos; et al. Cascading Style Sheets Level 2 Revision 1 (CSS 2.1) Specification. 2011年6月7日. REC. URL: https://www.w3.org/TR/CSS2/
[CSSOM]
Simon Pieters; Glenn Adams. CSS Object Model (CSSOM). 2016年3月17日. WD. URL: https://www.w3.org/TR/cssom-1/
[RFC2119]
S. Bradner. Key words for use in RFCs to Indicate Requirement Levels. 1997年3月. Best Current Practice. URL: https://tools.ietf.org/html/rfc2119

プロパティ索引

名前 初期値 適用対象 継承 %値 アニメーション可能 アニメーションタイプ 正準順序 算出値
block-size <‘width’> auto width および height と同じ なし 対応する物理プロパティと同様 width, height と同じ 文法どおり width, height と同じ
border-block <‘border-block-start’> 各プロパティを参照 各プロパティを参照 各プロパティを参照 各プロパティを参照 各プロパティを参照 文法どおり 各プロパティを参照
border-block-color <‘border-top-color’>{1,2} 各プロパティを参照 各プロパティを参照 各プロパティを参照 各プロパティを参照 各プロパティを参照 文法どおり 各プロパティを参照
border-block-end <‘border-top-width’> || <‘border-top-style’> || <color> 各プロパティを参照 各プロパティを参照 各プロパティを参照 各プロパティを参照 各プロパティを参照 文法どおり 各プロパティを参照
border-block-end-color <‘border-top-color’> currentcolor すべての要素 なし 該当なし border-top-color と同じ 文法どおり 対応する border-*-color プロパティと同じ
border-block-end-style <‘border-top-style’> none すべての要素 なし 該当なし border-top-style と同じ 文法どおり 対応する border-*-style プロパティと同じ
border-block-end-width <‘border-top-width’> medium すべての要素 なし 該当なし border-top-width と同じ 文法どおり 対応する border-*-width プロパティと同じ
border-block-start <‘border-top-width’> || <‘border-top-style’> || <color> 各プロパティを参照 各プロパティを参照 各プロパティを参照 各プロパティを参照 各プロパティを参照 文法どおり 各プロパティを参照
border-block-start-color <‘border-top-color’> currentcolor すべての要素 なし 該当なし border-top-color と同じ 文法どおり 対応する border-*-color プロパティと同じ
border-block-start-style <‘border-top-style’> none すべての要素 なし 該当なし border-top-style と同じ 文法どおり 対応する border-*-style プロパティと同じ
border-block-start-width <‘border-top-width’> medium すべての要素 なし 該当なし border-top-width と同じ 文法どおり 対応する border-*-width プロパティと同じ
border-block-style <‘border-top-style’>{1,2} 各プロパティを参照 各プロパティを参照 各プロパティを参照 各プロパティを参照 各プロパティを参照 文法どおり 各プロパティを参照
border-block-width <‘border-top-width’>{1,2} 各プロパティを参照 各プロパティを参照 各プロパティを参照 各プロパティを参照 各プロパティを参照 文法どおり 各プロパティを参照
border-end-end-radius <‘border-top-left-radius’> border-top-left-radius と同じ すべての要素 なし border-top-left-radius と同じ border-top-left-radius と同じ 文法どおり 対応する物理 border-*-radius プロパティと同じ
border-end-start-radius <‘border-top-left-radius’> border-top-left-radius と同じ すべての要素 なし border-top-left-radius と同じ border-top-left-radius と同じ 文法どおり 対応する物理 border-*-radius プロパティと同じ
border-inline <‘border-block-start’> 各プロパティを参照 各プロパティを参照 各プロパティを参照 各プロパティを参照 各プロパティを参照 文法どおり 各プロパティを参照
border-inline-color <‘border-top-color’>{1,2} 各プロパティを参照 各プロパティを参照 各プロパティを参照 各プロパティを参照 各プロパティを参照 文法どおり 各プロパティを参照
border-inline-end <‘border-top-width’> || <‘border-top-style’> || <color> 各プロパティを参照 各プロパティを参照 各プロパティを参照 各プロパティを参照 各プロパティを参照 文法どおり 各プロパティを参照
border-inline-end-color <‘border-top-color’> currentcolor すべての要素 なし 該当なし border-top-color と同じ 文法どおり 対応する border-*-color プロパティと同じ
border-inline-end-style <‘border-top-style’> none すべての要素 なし 該当なし border-top-style と同じ 文法どおり 対応する border-*-style プロパティと同じ
border-inline-end-width <‘border-top-width’> medium すべての要素 なし 該当なし border-top-width と同じ 文法どおり 対応する border-*-width プロパティと同じ
border-inline-start <‘border-top-width’> || <‘border-top-style’> || <color> 各プロパティを参照 各プロパティを参照 各プロパティを参照 各プロパティを参照 各プロパティを参照 文法どおり 各プロパティを参照
border-inline-start-color <‘border-top-color’> currentcolor すべての要素 なし 該当なし border-top-color と同じ 文法どおり 対応する border-*-color プロパティと同じ
border-inline-start-style <‘border-top-style’> none すべての要素 なし 該当なし border-top-style と同じ 文法どおり 対応する border-*-style プロパティと同じ
border-inline-start-width <‘border-top-width’> medium すべての要素 なし 該当なし border-top-width と同じ 文法どおり 対応する border-*-width プロパティと同じ
border-inline-style <‘border-top-style’>{1,2} 各プロパティを参照 各プロパティを参照 各プロパティを参照 各プロパティを参照 各プロパティを参照 文法どおり 各プロパティを参照
border-inline-width <‘border-top-width’>{1,2} 各プロパティを参照 各プロパティを参照 各プロパティを参照 各プロパティを参照 各プロパティを参照 文法どおり 各プロパティを参照
border-start-end-radius <‘border-top-left-radius’> border-top-left-radius と同じ すべての要素 なし border-top-left-radius と同じ border-top-left-radius と同じ 文法どおり 対応する物理 border-*-radius プロパティと同じ
border-start-start-radius <‘border-top-left-radius’> border-top-left-radius と同じ すべての要素 なし border-top-left-radius と同じ border-top-left-radius と同じ 文法どおり 対応する物理 border-*-radius プロパティと同じ
inline-size <‘width’> auto width および height と同じ なし 対応する物理プロパティと同様 width, height と同じ 文法どおり width, height と同じ
inset <‘top’>{1,4} 各プロパティを参照 各プロパティを参照 各プロパティを参照 各プロパティを参照 各プロパティを参照 文法どおり 各プロパティを参照
inset-block <‘top’>{1,2} 各プロパティを参照 各プロパティを参照 各プロパティを参照 各プロパティを参照 各プロパティを参照 文法どおり 各プロパティを参照
inset-block-end <‘top’> auto 配置された要素 なし 対応する物理プロパティと同様 top と同じ 文法どおり 対応する top/right/bottom/left プロパティと同じ
inset-block-start <‘top’> auto 配置された要素 なし 対応する物理プロパティと同様 top と同じ 文法どおり 対応する top/right/bottom/left プロパティと同じ
inset-inline <‘top’>{1,2} 各プロパティを参照 各プロパティを参照 各プロパティを参照 各プロパティを参照 各プロパティを参照 文法どおり 各プロパティを参照
inset-inline-end <‘top’> auto 配置された要素 なし 対応する物理プロパティと同様 top と同じ 文法どおり 対応する top/right/bottom/left プロパティと同じ
inset-inline-start <‘top’> auto 配置された要素 なし 対応する物理プロパティと同様 top と同じ 文法どおり 対応する top/right/bottom/left プロパティと同じ
margin-block <‘margin-left’>{1,2} 各プロパティを参照 各プロパティを参照 各プロパティを参照 各プロパティを参照 各プロパティを参照 文法どおり 各プロパティを参照
margin-block-end <‘margin-top’> 0 margin-top と同じ なし 対応する物理プロパティと同様 margin-top と同じ 文法どおり 対応する margin-* プロパティと同じ
margin-block-start <‘margin-top’> 0 margin-top と同じ なし 対応する物理プロパティと同様 margin-top と同じ 文法どおり 対応する margin-* プロパティと同じ
margin-inline <‘margin-left’>{1,2} 各プロパティを参照 各プロパティを参照 各プロパティを参照 各プロパティを参照 各プロパティを参照 文法どおり 各プロパティを参照
margin-inline-end <‘margin-top’> 0 margin-top と同じ なし 対応する物理プロパティと同様 margin-top と同じ 文法どおり 対応する margin-* プロパティと同じ
margin-inline-start <‘margin-top’> 0 margin-top と同じ なし 対応する物理プロパティと同様 margin-top と同じ 文法どおり 対応する margin-* プロパティと同じ
max-block-size <‘max-width’> none width および height と同じ なし 対応する物理プロパティと同様 max-width, max-height と同じ 文法どおり max-width, max-height と同じ
max-inline-size <‘max-width’> none width および height と同じ なし 対応する物理プロパティと同様 max-width, max-height と同じ 文法どおり max-width, max-height と同じ
min-block-size <‘min-width’> 0 width および height と同じ なし 対応する物理プロパティと同様 min-width, min-height と同じ 文法どおり min-width, min-height と同じ
min-inline-size <‘min-width’> 0 width および height と同じ なし 対応する物理プロパティと同様 min-width, min-height と同じ 文法どおり min-width, min-height と同じ
padding-block <‘padding-left’>{1,2} 各プロパティを参照 各プロパティを参照 各プロパティを参照 各プロパティを参照 各プロパティを参照 文法どおり 各プロパティを参照
padding-block-end <‘padding-top’> 0 すべての要素 なし 対応する物理プロパティと同様 padding-top と同じ 文法どおり 対応する padding-* プロパティと同じ
padding-block-start <‘padding-top’> 0 すべての要素 なし 対応する物理プロパティと同様 padding-top と同じ 文法どおり 対応する padding-* プロパティと同じ
padding-inline <‘padding-left’>{1,2} 各プロパティを参照 各プロパティを参照 各プロパティを参照 各プロパティを参照 各プロパティを参照 文法どおり 各プロパティを参照
padding-inline-end <‘padding-top’> 0 すべての要素 なし 対応する物理プロパティと同様 padding-top と同じ 文法どおり 対応する padding-* プロパティと同じ
padding-inline-start <‘padding-top’> 0 すべての要素 なし 対応する物理プロパティと同様 padding-top と同じ 文法どおり 対応する padding-* プロパティと同じ

課題索引

不安定な事項 このモジュールの一部の実装は Web上で CSS Writing Modes を出荷するために (HTMLのデフォルトスタイルを正しく実装するため) 実質的に必要となるため、 CSSWGは §2 フロー依存値: block-start, block-end, inline-start, inline-end および §4 フロー依存ボックスモデルプロパティ の必要な機能について 出荷を承認しました。 (詳細については FPWD発表 を参照してください。)

ただし、いくつか重要な未解決の課題があります:

これらの課題についてのコメント、提案、ユースケースを歓迎します。 GitHubで提出するか、@csswgにツイートするか、www-style@w3.org に送信してください。
フロー依存プロパティの継承順序とマッピングショートハンドと論理プロパティの相互作用 について未解決の課題があります。
この機能の提案された構文は 議論中であり、 ここで記載されている内容から変更される可能性が非常に高いです。 このセクションは代替案の議論を促進し、 影響を受けるプロパティを記録し、 最終的に選択される構文スイッチの解釈への影響を明確にするために草案に残しています。