CSS 論理プロパティと値モジュール レベル1

W3C 作業草案

この文書の詳細情報
このバージョン:
https://www.w3.org/TR/2025/WD-css-logical-1-20251204/
最新版:
https://www.w3.org/TR/css-logical-1/
エディタースドラフト:
https://drafts.csswg.org/css-logical-1/
過去のバージョン:
履歴:
https://www.w3.org/standards/history/css-logical-1/
フィードバック:
CSSWG Issues リポジトリー
仕様内インライン
編集者:
Microsoft
Elika J. Etemad / fantasaiApple
この仕様の編集提案:
GitHubエディター
テストスイート:
https://wpt.fyi/results/css/css-logical/

概要

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

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

この文書の位置付け

このセクションは本書が公開された時点の文書の位置付けを説明します。 現在のW3C出版物の一覧およびこの技術報告書の最新版は W3C 標準と草案の一覧 にあります。

この文書は CSS ワーキンググループ により、作業草案(Working Draft) として勧告トラック上で 公開されました。 作業草案としての公開は、W3C およびそのメンバーによる賛同を意味しません。

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

ご意見は GitHub で issue を作成(推奨)して送ってください。 件名に spec コード「css-logical」を含めてください(例: “[css-logical] …コメントの概要…”)。 すべての issue とコメントはアーカイブされています。 あるいは、意見は (アーカイブあり) の公開メーリングリスト www-style@w3.org に送ることもできます。

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

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

1. 導入

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

異なる書記体系では記述方向が異なるため、 様々な書字モードが存在します: 左から右、上から下; 右から左、上から下; 下から上、右から左; などです。 “ページの開始” や “行の開始” などの論理的な概念は、 “行の上端” や “段落の左端” など物理的な概念と異なるマッピングになります。 レイアウトの一部の側面は実際には書字方向に対して相対的に決定されるため、 ページが別のシステムに翻訳されるときに変化し得ます。 一方、他の側面はページの物理的な向きに本質的に依存します。

例えば、 英語ではリスト、見出し、段落は通常左揃えになりますが、 実際には「開始揃え」です。アラビア語では同じ構造が右揃えとなるため、 多言語文書では両方の書記体系に対応できる必要があります。

以下のコードは論理構文を使うことで異なる書記体系を横断して動作するコードを書ける例を示しています:

下記コードの互換ブラウザでの表示例
<blockquote dir="auto">Quotation in English</blockquote>
<blockquote dir="auto">اقتباس في العربية</blockquote>
blockquote {
    text-align: start; /* ラテン文字はleft、アラビア語はright */
    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 valueであるwriting-modedirectiontext-orientation の値によって、フロー相対キーワード・プロパティの解釈が変わります。

典型的な英語レイアウトにおける物理用語とフロー相対用語の対応
縦書き中国語レイアウトにおける物理用語とフロー相対用語の対応

注: text-orientation: upright との相互作用のため、 used directioncomputed value である writing-mode および text-orientation に依存します。

Tests

論理プロパティの一般テスト


不安定な事項 このモジュールの一部実装は、 WebでCSS Writing Modesを実装するうえで (デフォルトのHTMLスタイルを正しく実装するため)、実質的に必須であるため、 CSSWGは§ 2 フロー相対値: block-start, block-end, inline-start, inline-endおよび§ 4 フロー相対ボックスモデルプロパティに必要な機能は shipすることを承認しました。 (詳細は FPWD アナウンス 参照。)

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

コメント、提案、利用例など歓迎します。 GitHub・@csswgへのツイート・www-style@w3.org送付でお願いします。

1.1. 値の定義

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

各定義に記載されているプロパティ固有値の他、 本仕様で定義されるすべてのプロパティは CSS全域キーワードを値として受け付けます。 読みやすくするため本文中には明示的に繰り返していません。

2. フロー相対値: block-start, block-end, inline-start, inline-end

多くのCSSプロパティは歴史的に、方向キーワード値 (物理的topbottomleftright)を受け入れてきました。 本仕様では、方向キーワード値としてフロー相対値(block-startblock-endinline-startinline-end)を導入します。

プロパティの効果は1次元または2次元のいずれかです。 文脈的に1次元に制限される場合は フロー相対キーワードは短縮形(startおよびend)になります。

CSS Level 2のプロパティはここで、フロー相対方向キーワードも受け付けるよう再定義されます。 これらの値は対応する物理値の代わりに利用できます。 複数キーワードをとるプロパティでは、 フロー相対値と物理値の併用はできません(将来の仕様で別途定義される場合を除く)。

注: 最近のCSS仕様では多くの場合、フロー相対ないし行相対の値を 物理値に加えて、あるいは代わりに定義することが期待されています。 これら相対値のマッピングは、一般に ボックス自身に影響する場合は書字モードを包含ブロックに従い、 内容に対しては自身の書字モードを使うのが原則です。 ただし、どの書字モードに従うかは明示定義が必要です。

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

名前: caption-side
新しい値: inline-start | inline-end
算出値: 指定キーワード
テスト

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

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

このプロパティのマッピングは、キャプションの 書字モード を、その 包含ブロック(すなわち table wrapper box)で使用します。

2.2. float および clear プロパティのフロー相対値

名前: float, clear
新しい値: inline-start | inline-end
算出値: 指定キーワード
テスト

これらのプロパティのマッピングは、要素の書字モードをその包含ブロックに従って行います。

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

2.3. text-align プロパティのフロー相対値

名前: text-align
新しい値: start | end
算出値: 指定キーワード

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

3. フロー相対ページ分類

CSS では、すべてのページはユーザーエージェントにより左ページまたは右ページのいずれかに分類されます。[CSS2] ただし見開きでどちらが先頭ページになるかは、 ページ進行が左から右か右から左かによります。

見開きの左側や右側ではなく、見開き内で早い側・遅い側を指定して 改ページ制御ができるようにするため、 このモジュールでは page-break-after および page-break-before プロパティのために、次の追加キーワードを導入します [CSS2]:

recto
左から右のページ進行では right、 右から左のページ進行では left に相当します。
verso
左から右のページ進行では left、 右から左のページ進行では right に相当します。

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

著者は通常ページ番号を物理的な位置指定で配置しますが、 ヘッダーの内容は見開き中のどちらのページが早い側かによる慣習に従うことが多いです。 そのため、フロー相対の ページセレクタ も、フロー相対ページ選択をサポートするために次のように追加されました:

:recto
左から右のページ進行では ':right'、 右から左のページ進行では ':left' に相当します。
:verso
左から右のページ進行では ':left'、 右から左のページ進行では ':right' に相当します。

フロー相対ページセレクタの詳細度(specificity)は ':left' および ':right' ページセレクタと等しいです。

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

多くの整形効果においては、 影響を受ける軸や方向が値ではなくプロパティ名に符号化されています。 各プロパティの方向や軸のマッピングタイプ (フロー相対または物理) を マッピングロジック と呼びます。 これまで、すべてのプロパティは物理用語で符号化されてきましたが、 本仕様ではCSS2の物理ボックスモデルプロパティに フロー相対となる等価プロパティを新たに導入します。

注: 最近のCSS仕様では多くの場合、フロー相対または行相対プロパティを 物理的プロパティの代わりに、または加えて定義することが期待されています。

各組のフロー相対プロパティと物理プロパティは (ショートハンドプロパティを無視して) 箱の各辺や寸法に等価なスタイルを設定する関係にあり、 これを 論理プロパティグループ と呼びます。 例えば padding-* プロパティは 一つの論理プロパティグループを形成、 margin-* プロパティは 別の論理プロパティグループborder-*-style プロパティは さらに別の論理プロパティグループ などです。 (各ロングハンドプロパティは高々1つの論理プロパティグループに属します。)

論理プロパティグループ内で 対応づけられるフロー相対プロパティと物理プロパティは 要素自身の算出済み 書字モードによってペアになります。 各プロパティの指定値は distinct のままですが、 ペアとなるプロパティは算出値を共有します。 この共有値はカスケード手順で両方の宣言をまとめて評価して決まります。 つまり、そのペアの両プロパティの算出値は CSSカスケードで優先度の高い方の指定値から導出されます。 [CSS-CASCADE-3]

注:これは実装において CSS宣言ブロック内での宣言順序の相対維持を必要とします(従来のCSSカスケードにはありませんでした)。 また、writing-modedirectiontext-orientation を先に算出済みにする必要があります。 フロー相対宣言と物理宣言のカスケードを正しく行い 論理プロパティグループ算出値を決定する必要があります。

例えばこのようなルールがある場合:
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()) では、そのようなペア内の各個別プロパティに対して同じ値を返さなければなりません。

注: 要素自身の書字モードでそれぞれのフロー相対プロパティから 物理的等価プロパティへのマッピングを判断するのは、 カスケード計算を単純にし、著者の理解を容易にします。 ただし実際には多くのケースで問題があり、このディスカッションなどを参照してください。 要素の書字モードを親から変更する場合には 正しいマッピング動作を得るために入れ子要素を使う必要があるかもしれません。

各プロパティの継承元は親の対応プロパティです。 例えば、inline-start マージンがrtlボックスで右マージンに相当していても、 このボックスの margin-inline-start は 親の margin-inline-start を継承します(たとえ実際それが親の マージンに相当する場合でも)。

別途定義がない限り、論理・物理ロングハンド両対応のショートハンドプロパティ (例:all ショートハンド)は 物理ロングハンドを最後に設定します。 たとえば all: inherit は すべてのmarginプロパティをinheritにしますが、 物理ロングハンドが最後に設定されるため、 子要素のマージンは親の物理対応プロパティから継承されます。

テスト

4.1. 論理的高さおよび論理的幅: block-sizeinline-sizemin-block-sizemin-inline-size、 およびmax-block-sizemax-inline-sizeプロパティ

名前: block-size, inline-size
値: <'width'>
初期値: auto
適用対象: height および width と同じ
継承: no
パーセンテージ: 対応する物理プロパティと同様
算出値: height および width と同じ
正規順序: 文法に従う
アニメーション型: 算出値型による
論理プロパティグループ: size
テスト

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

名前: min-block-size, min-inline-size
値: <'min-width'>
初期値: 0
適用対象: height および width と同じ
継承: no
パーセンテージ: 対応する物理プロパティと同様
算出値: min-height および min-width と同じ
正規順序: 文法に従う
アニメーション型: 算出値型による
論理プロパティグループ: min-size
テスト

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

名前: max-block-size, max-inline-size
値: <'max-width'>
初期値: none
適用対象: height および width と同じ
継承: no
パーセンテージ: 対応する物理プロパティと同様
算出値: max-height および max-width と同じ
正規順序: 文法に従う
アニメーション型: 算出値型による
論理プロパティグループ: max-size
テスト

これらのプロパティは max-height および max-width プロパティに対応します。 マッピングは要素の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 と同じ
継承: no
パーセンテージ: 対応する物理プロパティと同様
算出値: 対応する margin-* プロパティと同じ
正規順序: 文法に従う
アニメーション型: 算出値型による
論理プロパティグループ: margin
テスト

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

名前: margin-block, margin-inline
値: <'margin-top'>{1,2}
初期値: 各個別プロパティ参照
適用対象: 各個別プロパティ参照
継承: 各個別プロパティ参照
パーセンテージ: 各個別プロパティ参照
算出値: 各個別プロパティ参照
アニメーション型: 各個別プロパティ参照
正規順序: 文法に従う
テスト

これら 2 つのショートハンドプロパティmargin-block-startmargin-block-endmargin-inline-startmargin-inline-end をそれぞれ設定します。 最初の値は開始辺のスタイルを表し、 2 番目の値は終端辺のスタイルを表します。 1つだけ値が与えられた場合、開始終端の両辺に適用されます。

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

topleftbottomright などの物理プロパティ、それに対応する inset-block-startinset-block-endinset-inline-startinset-inline-end などのフロー相対プロパティ、 そして inset-blockinset-inlineinset ショートハンドは、まとめて inset プロパティと呼ばれます。

名前: inset-block-start, inset-block-end, inset-inline-start, inset-inline-end
値: <'top'>
初期値: auto
適用対象: positioned elements
継承: no
パーセンテージ: 対応する物理プロパティと同様
算出値: 対応する top/right/bottom/left と同じ
正規順序: 文法に従う
アニメーション型: 算出値型による
論理プロパティグループ: inset
テスト

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

名前: inset-block, inset-inline
値: <'top'>{1,2}
初期値: 各個別プロパティ参照
適用対象: 各個別プロパティ参照
継承: 各個別プロパティ参照
パーセンテージ: 各個別プロパティ参照
算出値: 各個別プロパティ参照
アニメーション型: 各個別プロパティ参照
正規順序: 文法に従う

これら 2 つのショートハンドプロパティinset-block-startinset-block-endinset-inline-startinset-inline-end をそれぞれ設定します。 最初の値は開始辺のスタイルを表し、 2 番目の値は終端辺のスタイルを表します。 1つだけ値が与えられた場合、開始終端の両辺に適用されます。

名前: 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-top と同じ
継承: no
パーセンテージ: 対応する物理プロパティと同様
算出値: 対応する padding-* プロパティと同じ
正規順序: 文法に従う
アニメーション型: 算出値型による
論理プロパティグループ: padding
テスト

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

名前: padding-block, padding-inline
値: <'padding-top'>{1,2}
初期値: 各個別プロパティ参照
適用対象: 各個別プロパティ参照
継承: 各個別プロパティ参照
パーセンテージ: 各個別プロパティ参照
算出値: 各個別プロパティ参照
アニメーション型: 各個別プロパティ参照
正規順序: 文法に従う
テスト

これら 2 つのショートハンドプロパティpadding-block-startpadding-block-endpadding-inline-startpadding-inline-end をそれぞれ設定します。 最初の値は開始辺のスタイルを表し、 2 番目の値は終端辺のスタイルを表します。 1つだけ値が与えられた場合、開始終端の両辺に適用されます。

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-top-width と同じ
継承: no
パーセンテージ: n/a
算出値: 対応する border-*-width プロパティと同じ
正規順序: 文法に従う
アニメーション型: 算出値型による
論理プロパティグループ: border-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-widthborder-block-end-widthborder-inline-start-widthborder-inline-end-width をそれぞれ設定します。 最初の値は開始辺の幅を表し、 2 番目の値は終端辺の幅を表します。 1つだけ値が与えられた場合、開始終端の両辺に適用されます。

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-top-style と同じ
継承: no
パーセンテージ: n/a
算出値: 対応する border-*-style プロパティと同じ
正規順序: 文法に従う
アニメーション型: 離散
論理プロパティグループ: border-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-styleborder-block-end-styleborder-inline-start-styleborder-inline-end-style をそれぞれ設定します。 最初の値は開始辺のスタイルを表し、 2 番目の値は終端辺のスタイルを表します。 1つだけ値が与えられた場合、開始終端の両辺に適用されます。

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-top-color と同じ
継承: no
パーセンテージ: n/a
算出値: 対応する border-*-color プロパティと同じ
正規順序: 文法に従う
アニメーション型: 算出値型による
論理プロパティグループ: border-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-colorborder-block-end-colorborder-inline-start-colorborder-inline-end-color をそれぞれ設定します。 最初の値は開始辺の色を表し、 2番目の値は終端辺の色を表します。 1つだけ値が与えられた場合、開始終端の両辺に適用されます。

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-startborder-block-end または border-inline-startborder-inline-end をそれぞれ同じスタイルで設定します。

4.6. フロー相対コーナーの丸み: border-start-start-radiusborder-start-end-radiusborder-end-start-radiusborder-end-end-radius 各プロパティ

名前: border-start-start-radius, border-start-end-radius, border-end-start-radius, border-end-end-radius
値: <'border-top-left-radius'>
初期値: border-top-left-radius と同じ
適用対象: border-top-left-radius と同じ
継承: no
パーセンテージ: border-top-left-radius と同じ
算出値: 対応する物理 border-*-radius プロパティと同じ
正規順序: 文法に従う
アニメーション型: 算出値型による
論理プロパティグループ: border-radius
テスト

これらのプロパティは border-top-left-radiusborder-bottom-left-radiusborder-top-right-radiusborder-bottom-right-radius 各プロパティに対応します。 マッピングは要素の writing-modedirectiontext-orientation に依存し、最初の start/end がブロック軸側、2番目がインライン軸側を指定します(つまり 'border-block-inline-radius' のようになります)。

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

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

この機能の提案構文は 議論中 であり、ここで記述されたものから変更される可能性が極めて高いです。 代替案の議論促進、該当プロパティの記録、そして最終的に選ばれる構文スイッチの解釈への期待されるインパクトを明確にするため、この節はドラフトに残されています。

以下の [CSS2] のショートハンドプロパティは 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, Oriol Brufau, Shinyu Murakami, Tab Atkins

6. 変更点

2018年8月27日ワーキングドラフト以降の変更点:

以前のエディタードラフトと2017年5月18日FPWD間の変更点:

プライバシー考慮事項

本仕様について新たなプライバシー考慮事項は報告されていません。

セキュリティの考慮事項

本仕様について新たなセキュリティ考慮事項は報告されていません。

テスト

他仕様の機能


適合性

文書表記規則

適合要件は記述的な断言と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" で規範テキストと区別されます。例:

注: これはインフォーマティブな注記です。

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

テスト

本仕様の内容に関するテストは、このような“Tests”ブロックで記述される場合があります。 そのようなブロックはすべて非規範です。


適合クラス

本仕様への適合は、次の3つの適合クラスについて定義されます:

スタイルシート
CSS スタイルシート
レンダラー
スタイルシートの意味を解釈し、それを用いる文書をレンダリングするUA
オーサリングツール
スタイルシートを書くUA

この仕様に準拠したスタイルシートは、本モジュールで定義された構文を使用する全ての文が、 一般CSS文法および本モジュールで定義される各機能個別の文法に従い有効である場合です。

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

この仕様に準拠するオーサリングツールは、 一般CSS文法および本モジュールで定義される各機能の文法に従って構文的に正しいスタイルシートを書き、 本モジュールで記載される他のスタイルシート適合要件も満たすものです。

部分実装

著者が将来互換なパース規則を利用してフォールバック値を指定できるようにするため、 CSSレンダラーは、使用可能なサポートがない at-rule、プロパティ、値、キーワード、その他構文要素を無効として(かつ 適切に無視)扱わなければなりません。 特にUAは、未サポート値のみを無視してサポートされる値だけ有効にするような選択的なパースを行ってはなりません。 未サポート値があれば(無効値として)、CSSはその宣言全体の無視を要求します。

不安定・独自機能の実装

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

非実験的な実装

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

CSSの相互運用性を確立・維持するため、 CSSワーキンググループは非実験的CSSレンダラーが実装レポート(必要ならばそのテストケースも)を W3Cへ提出してから、ベンダープレフィックスなしでどのCSS機能もリリースするよう求めています。W3Cへ提出されたテストケースは CSSワーキンググループによりレビュー・修正される場合があります。

テストケース・実装レポート提出のさらなる情報は CSSワーキンググループのウェブサイト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-BOX-4]
Elika Etemad. CSS Box Model Module Level 4. 2024年8月4日. WD. URL: https://www.w3.org/TR/css-box-4/
[CSS-BREAK-3]
Rossen Atanassov; Elika Etemad. CSS Fragmentation Module Level 3. 2018年12月4日. CR. URL: https://www.w3.org/TR/css-break-3/
[CSS-CASCADE-3]
Elika Etemad; Tab Atkins Jr.. CSS Cascading and Inheritance Level 3. 2021年2月11日. REC. URL: https://www.w3.org/TR/css-cascade-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-CASCADE-6]
Elika Etemad; Miriam Suzanne; Tab Atkins Jr.. CSS Cascading and Inheritance Level 6. 2024年9月6日. WD. URL: https://www.w3.org/TR/css-cascade-6/
[CSS-COLOR-5]
Chris Lilley; 他. CSS Color Module Level 5. 2025年3月18日. WD. URL: https://www.w3.org/TR/css-color-5/
[CSS-DISPLAY-4]
Elika Etemad; Tab Atkins Jr.. CSS Display Module Level 4. 2025年11月6日. WD. URL: https://www.w3.org/TR/css-display-4/
[CSS-POSITION-3]
Elika Etemad; Tab Atkins Jr.. CSS Positioned Layout Module Level 3. 2025年10月7日. WD. URL: https://www.w3.org/TR/css-position-3/
[CSS-SCROLL-SNAP-1]
Matt Rakow; 他. CSS Scroll Snap Module Level 1. 2021年3月11日. CR. URL: https://www.w3.org/TR/css-scroll-snap-1/
[CSS-SIZING-3]
Tab Atkins Jr.; Elika Etemad. CSS Box Sizing Module Level 3. 2021年12月17日. WD. URL: https://www.w3.org/TR/css-sizing-3/
[CSS-TABLES-3]
François Remy; Greg Whitworth; David Baron. CSS Table Module Level 3. 2019年7月27日. WD. URL: https://www.w3.org/TR/css-tables-3/
[CSS-TEXT-3]
Elika Etemad; Koji Ishii; Florian Rivoal. CSS Text Module Level 3. 2024年9月30日. CRD. URL: https://www.w3.org/TR/css-text-3/
[CSS-UI-4]
Florian Rivoal. CSS Basic User Interface Module Level 4. 2021年3月16日. WD. URL: https://www.w3.org/TR/css-ui-4/
[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-3]
Elika Etemad; Koji Ishii. CSS Writing Modes Level 3. 2019年12月10日. REC. URL: https://www.w3.org/TR/css-writing-modes-3/
[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/
[CSSOM]
Daniel Glazman; Emilio Cobos Álvarez. CSS Object Model (CSSOM). 2021年8月26日. WD. URL: https://www.w3.org/TR/cssom-1/
[RFC2119]
S. Bradner. Key words for use in RFCs to Indicate Requirement Levels. 1997年3月. ベストプラクティス. URL: https://datatracker.ietf.org/doc/html/rfc2119

プロパティ索引

名前 初期値 適用対象 継承 %指定 アニメーション型 正規順序 算出値 論理プロパティグループ
block-size <'width'> auto height と width と同じ no 対応する物理プロパティと同様 算出値型による 文法に従う height, width と同じ size
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 と同じ no n/a 算出値型による 文法に従う 対応する border-*-color と同じ border-color
border-block-end-style <'border-top-style'> none border-top-style と同じ no n/a 離散 文法に従う 対応する border-*-style と同じ border-style
border-block-end-width <'border-top-width'> medium border-top-width と同じ no n/a 算出値型による 文法に従う 対応する border-*-width と同じ border-width
border-block-start <'border-top-width'> || <'border-top-style'> || <color> 各個別プロパティ参照 各個別プロパティ参照 各個別プロパティ参照 各個別プロパティ参照 各個別プロパティ参照 文法に従う 各個別プロパティ参照
border-block-start-color <'border-top-color'> currentcolor border-top-color と同じ no n/a 算出値型による 文法に従う 対応する border-*-color と同じ border-color
border-block-start-style <'border-top-style'> none border-top-style と同じ no n/a 離散 文法に従う 対応する border-*-style と同じ border-style
border-block-start-width <'border-top-width'> medium border-top-width と同じ no n/a 算出値型による 文法に従う 対応する border-*-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 と同じ no border-top-left-radius と同じ 算出値型による 文法に従う 対応する物理 border-*-radius と同じ border-radius
border-end-start-radius <'border-top-left-radius'> border-top-left-radius と同じ border-top-left-radius と同じ no border-top-left-radius と同じ 算出値型による 文法に従う 対応する物理 border-*-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 と同じ no n/a 算出値型による 文法に従う 対応する border-*-color と同じ border-color
border-inline-end-style <'border-top-style'> none border-top-style と同じ no n/a 離散 文法に従う 対応する border-*-style と同じ border-style
border-inline-end-width <'border-top-width'> medium border-top-width と同じ no n/a 算出値型による 文法に従う 対応する border-*-width と同じ border-width
border-inline-start <'border-top-width'> || <'border-top-style'> || <color> 各個別プロパティ参照 各個別プロパティ参照 各個別プロパティ参照 各個別プロパティ参照 各個別プロパティ参照 文法に従う 各個別プロパティ参照
border-inline-start-color <'border-top-color'> currentcolor border-top-color と同じ no n/a 算出値型による 文法に従う 対応する border-*-color と同じ border-color
border-inline-start-style <'border-top-style'> none border-top-style と同じ no n/a 離散 文法に従う 対応する border-*-style と同じ border-style
border-inline-start-width <'border-top-width'> medium border-top-width と同じ no n/a 算出値型による 文法に従う 対応する border-*-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 と同じ no border-top-left-radius と同じ 算出値型による 文法に従う 対応する物理 border-*-radius と同じ border-radius
border-start-start-radius <'border-top-left-radius'> border-top-left-radius と同じ border-top-left-radius と同じ no border-top-left-radius と同じ 算出値型による 文法に従う 対応する物理 border-*-radius と同じ border-radius
inline-size <'width'> auto height と width と同じ no 対応する物理プロパティと同様 算出値型による 文法に従う height, width と同じ size
inset <'top'>{1,4} 各個別プロパティ参照 各個別プロパティ参照 各個別プロパティ参照 各個別プロパティ参照 各個別プロパティ参照 文法に従う 各個別プロパティ参照
inset-block <'top'>{1,2} 各個別プロパティ参照 各個別プロパティ参照 各個別プロパティ参照 各個別プロパティ参照 各個別プロパティ参照 文法に従う 各個別プロパティ参照
inset-block-end <'top'> auto 定位要素 no 対応する物理プロパティと同様 算出値型による 文法に従う 対応する top/right/bottom/left と同じ inset
inset-block-start <'top'> auto 定位要素 no 対応する物理プロパティと同様 算出値型による 文法に従う 対応する top/right/bottom/left と同じ inset
inset-inline <'top'>{1,2} 各個別プロパティ参照 各個別プロパティ参照 各個別プロパティ参照 各個別プロパティ参照 各個別プロパティ参照 文法に従う 各個別プロパティ参照
inset-inline-end <'top'> auto 定位要素 no 対応する物理プロパティと同様 算出値型による 文法に従う 対応する top/right/bottom/left と同じ inset
inset-inline-start <'top'> auto 定位要素 no 対応する物理プロパティと同様 算出値型による 文法に従う 対応する top/right/bottom/left と同じ inset
margin-block <'margin-top'>{1,2} 各個別プロパティ参照 各個別プロパティ参照 各個別プロパティ参照 各個別プロパティ参照 各個別プロパティ参照 文法に従う 各個別プロパティ参照
margin-block-end <'margin-top'> 0 margin-top と同じ no 対応する物理プロパティと同様 算出値型による 文法に従う 対応する margin-* と同じ margin
margin-block-start <'margin-top'> 0 margin-top と同じ no 対応する物理プロパティと同様 算出値型による 文法に従う 対応する margin-* と同じ margin
margin-inline <'margin-top'>{1,2} 各個別プロパティ参照 各個別プロパティ参照 各個別プロパティ参照 各個別プロパティ参照 各個別プロパティ参照 文法に従う 各個別プロパティ参照
margin-inline-end <'margin-top'> 0 margin-top と同じ no 対応する物理プロパティと同様 算出値型による 文法に従う 対応する margin-* と同じ margin
margin-inline-start <'margin-top'> 0 margin-top と同じ no 対応する物理プロパティと同様 算出値型による 文法に従う 対応する margin-* と同じ margin
max-block-size <'max-width'> none height と width と同じ no 対応する物理プロパティと同様 算出値型による 文法に従う max-height, max-width と同じ max-size
max-inline-size <'max-width'> none height と width と同じ no 対応する物理プロパティと同様 算出値型による 文法に従う max-height, max-width と同じ max-size
min-block-size <'min-width'> 0 height と width と同じ no 対応する物理プロパティと同様 算出値型による 文法に従う min-height, min-width と同じ min-size
min-inline-size <'min-width'> 0 height と width と同じ no 対応する物理プロパティと同様 算出値型による 文法に従う min-height, min-width と同じ min-size
padding-block <'padding-top'>{1,2} 各個別プロパティ参照 各個別プロパティ参照 各個別プロパティ参照 各個別プロパティ参照 各個別プロパティ参照 文法に従う 各個別プロパティ参照
padding-block-end <'padding-top'> 0 padding-top と同じ no 対応する物理プロパティと同様 算出値型による 文法に従う 対応する padding-* と同じ padding
padding-block-start <'padding-top'> 0 padding-top と同じ no 対応する物理プロパティと同様 算出値型による 文法に従う 対応する padding-* と同じ padding
padding-inline <'padding-top'>{1,2} 各個別プロパティ参照 各個別プロパティ参照 各個別プロパティ参照 各個別プロパティ参照 各個別プロパティ参照 文法に従う 各個別プロパティ参照
padding-inline-end <'padding-top'> 0 padding-top と同じ no 対応する物理プロパティと同様 算出値型による 文法に従う 対応する padding-* と同じ padding
padding-inline-start <'padding-top'> 0 padding-top と同じ no 対応する物理プロパティと同様 算出値型による 文法に従う 対応する padding-* と同じ padding

課題索引

不安定な事項 このモジュールの一部実装は、WebでCSS Writing Modes を実装するうえで(デフォルトのHTMLスタイルを正しく実装するため)実質的に必須であるため、CSSWGは § 2 フロー相対値: block-start, block-end, inline-start, inline-end および § 4 フロー相対ボックスモデルプロパティに必要な機能は出荷承認しました。 (追加背景は FPWD アナウンス を参照。)

しかし、いくつか重要な未解決事項があります:

これらの課題へのコメント、提案、利用例を歓迎します。 GitHubに記載、@csswg へツイート、または www-style@w3.org へ送付してください。
この機能の提案構文は 議論中 であり、ここに記述されたものから変更される可能性が非常に高いです。 本節は代替案の議論促進、影響を受けるプロパティの文書化、そして最終的に選ばれる構文スイッチの解釈への期待される影響を明確にするためドラフトに残されています。