CSS3

プロパティ

page

  編集:2022.07.14 by T.A.

mdn

有名ページの利用。

名前 page
auto | <custom-ident>
初期値 auto
適用対象 A類分断点を作成する†ボックス
継承 されない(ただし、注釈文を見よ)
百分率 受容しない
算出値 指定値
正準的順序 文法に従う
アニメーション型 離散的

【† “作成する”の定義がはっきりしない。分断点をボックスの前後に作成する?内側に作成する? あるいは、[分断点を合間に作成するような一連のボックス]に適用される?】

page プロパティは、要素が表示されるものとするページ ― 有名ページ と呼ばれる、ある特定の種別の【名前を持つ】ページ ― を指定するために利用される。必要なら、強制ページ分断が導入され、指定された種別の新たなページが生成される。

【すなわち、page プロパティが異なる要素どうしは、同じページに置かれないように、(必要なら)改ページさせる。ゆえに、同じ要素が複数の種別名を持てないようにされている。】

注記: このページには、ページ選択子にて同じ種別名を利用して、スタイルをあてがえる。

ページの種別名は、文字大小区別の識別子である。ただし、CSS キーワードである auto 値については、ASCII 大小無視である。

page プロパティは継承されない。しかしながら、要素上の page 値が auto の場合は、その使用値は、非 auto 値を伴う最も近い先祖上に指定された値になる。根要素上に指定された auto 用の使用値は、空文字列である。

この仕様の以前のバージョンでは、page プロパティは継承されるものと指示していたので、[ page プロパティを継承させ、auto は常に空文字列による名前として扱う]ような実装も、この仕様に依然として適合である。この例外は、Level 4 では除去されることになることに注意。したがって作者は、非 auto 値を伴う要素の子孫上に auto 値を明示的に指定するべきでない ― 結果のふるまいが予測不能になるので。

auto
<custom-ident>

page プロパティは、次に従って働く:

  1. まず、【すべてのボックスそれぞれに対し、】 auto 値は、(上で指定されたように)非 auto にされている先祖に対し解決される。
  2. 次に、【すべてのボックスそれぞれに対し、】始端 page 値終端 page 値 が次に従って決定される: ボックスに[最初の/最後の]子ボックスが在れば、そのボックスから伝播され、無ければ、ボックス自身の page プロパティの使用値になる。子ボックスは、自身が page プロパティの適用対象であるとき、そのときに限り、自前の[始端 page 値/終端 page 値]を伝播する。

    注記: 最初の(最後の)子ボックスが、常に 最初の(最後の)子 要素から生成されるとは限らない。例えば、最初の子要素の display が none にされていたなら、ボックスを生成しないので、最初の子ボックスは,他(後続のいずれかの同胞)が生成するものになる。

  3. 根の始端 page 値が、最初に印刷されるページの種別になる。
  4. A類分断点にて出会う 2 個のボックスに対し、[その分断に先行するボックスの終端 page 値と、その分断に後続するボックスの始端 page 値とが合致しない]場合、その 2 個のボックスの合間にてページ分断が強制され、分断の後の内容は、【後続するボックスの始端 page 値による】有名種別のページボックス上から再開する。

注記: 本質的に,比較される 2 個の page 値は、A類分断点にて出会う最も深いボックスによるものになる ― page プロパティが適用されないボックスを根にするような下位ツリーは無視して。

ページ分断用の追加の詳細は [CSS-BREAK-3] を見よ。

下の文書では、横置きページ上に 2 個の table を描画する(実際に同じページに収まるならば):
@page narrow {
    size: 9cm 18cm;
}
@page rotated {
    size: landscape;
}
div {
    page: narrow;
}
table {
    page: rotated;
}

ページ種別名 "narrow" は、2 個目の table の後の p に利用される ― table 要素に対する page プロパティの効果は、p には及ばないので:

<div>
<table>...</table>
<table>...</table>
<p>This text is rendered on a 'narrow' page</p>
</div>

テスト
HTML:

ここに表示
[Edge]✖?
HTML:

ここに表示
スクリプト:


スクリプト:



表示内容:
表示内容: