page
Baseline 2023Newly available
Since February 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.
page
は CSS のプロパティで、@page
アットルールで定義された、名前付きページ、つまり特定の種類のページを指定するために使用します。
名前付きページを連続して使用しているセレクターが複数ある場合は、 break-after
を使用して強制的にページを分割する必要があるかもしれません。
構文
/* 名前付きページを設定 */
page: exampleName;
page: chapterIntro;
/* 祖先の名前付きページを使用 */
page: auto; /* 既定値 */
/* グローバル値 */
page: inherit;
page: initial;
page: revert;
page: revert-layer;
page: unset;
値
公式定義
初期値 | auto |
---|---|
適用対象 | ルート要素の通常フロー内におけるブロックレベル要素。ユーザーエージェントは他の要素に table-row 要素のように適用することがあります。 |
継承 | なし |
計算値 | 指定通り |
アニメーションの種類 | 離散値 |
形式文法
page =
auto |
例
名前付きページの例
この例では、この HTML には 2 つの部分があります。印刷コントロールと、印刷されるコンテンツです。
印刷コントロールにより、ユーザーは article
内の section
の印刷方法を指定できます。
目次
- 序文
- はじめに
- 第 1 章 - 名前付きページ
- 第 2 章 - ページの向き
- 第 3 章 - ページのマージン
- おわりに
序文
この本は、CSS の @page
アットルールが HTML の本の印刷にどのように役立つかについて解説したものです。
はじめに
この本は、 HTML 文書をページとして簡単に印刷する方法を示す概念です。
名前付きページ
Lorem ipsum
ページの向き
Lorem ipsum
ページマージン
設定できるページのマージンは 16 種類あります。
- @top-left-corner
- @top-left
- @top-center
- @top-right
- @top-right-corner
- @left-top
- @left-middle
- @left-bottom
- @right-top
- @right-middle
- @right-bottom
- @bottom-left-corner
- @bottom-left
- @bottom-center
- @bottom-right
- @bottom-right-corner
これらは、マージンのこれらの部分に現れるものを表示するために使用することができます。
おわりに
これで、本を書く準備は整いました。
CSS の最初の部分では、名前付きページを設定します。これには、サイズ、方向、および印刷されるページの @top-center
マージンに表示されるコンテンツが含まれます。
@page toc {
size: a4 portrait;
@top-center {
content: "目次";
}
}
@page foreword {
size: a4 portrait;
@top-center {
content: "序文";
}
}
@page introduction {
size: a4 portrait;
@top-center {
content: "はじめに";
}
}
@page conclusion {
size: a4 portrait;
@top-center {
content: "おわりに";
}
}
@page chapter {
size: a4 landscape;
@top-center {
content: "章";
}
}
CSS の次の部分では、属性セレクターを使用して、前回の CSS の章で定義した名前付き @page
ルールで定義した出力サイズ、方向、およびマージンを、page
プロパティを使用する要素に適用します。
class="chapter"
の節は同時実行であり、1 ページとして表示されます。
break-after: page;
を使用してそれらを分割し、各章を別々に印刷されるページに分割します。
@media print {
fieldset {
display: none;
}
section {
font-size: 2rem;
font-family: Roboto;
}
.chapter {
border: tomato 2px solid;
}
[data-print="grouped"] > #toc,
[data-print="paged"] > #toc {
page: toc;
font-family: Courier;
}
[data-print="grouped"] > #foreword,
[data-print="paged"] > #foreword {
page: foreword;
font-family: Courier;
}
[data-print="grouped"] > #introduction,
[data-print="paged"] > #introduction {
page: introduction;
font-family: Courier;
}
[data-print="grouped"] > #conclusion,
[data-print="paged"] > #conclusion {
page: conclusion;
font-family: Courier;
}
[data-print="grouped"] > .chapter,
[data-print="paged"] > .chapter {
page: chapter;
}
[data-print="paged"] > .chapter {
border: none;
break-after: page;
}
.chapter > ul {
columns: 2;
}
}
JavaScript は、別の印刷オプションを選択すると、名前付きページが適用されている属性である data-print
属性の値を更新します。
const printArea = document.querySelector("#print-area");
const printButton = document.querySelector("#print");
const printOption = document.querySelector("#printStyle");
printOption.addEventListener("change", (event) => {
if (event.target.value === "single") {
printArea.dataset.print = "single";
} else if (event.target.value === "grouped") {
printArea.dataset.print = "grouped";
} else {
printArea.dataset.print = "paged";
}
});
printButton.addEventListener("click", () => {
window.print();
});
出力される内容、および印刷プレビューダイアログに表示される内容は、選択した印刷スタイルラジオボタンによって異なります。
仕様書
Specification |
---|
CSS Paged Media Module Level 3 # using-named-pages |