CSS-правило @page
Базовая поддержка Недавно стало доступно
Эта функция работает на последних устройствах и в последних версиях браузеров. Она может не работать на старых устройствах или в старых версиях браузеров. Она поддерживается браузерами с декабря 2024 года.
Правило @page — это CSS-правило, используемое для изменения различных параметров печатных страниц. Оно задаёт и изменяет размеры, ориентацию и поля страницы. Правило @page можно использовать для выбора всех страниц в распечатке или их подмножества с помощью различных псевдоклассов.
Синтаксис
/* Targets all the pages */
@page {
size: 8.5in 9in;
margin-top: 4in;
}
/* Targets all even-numbered pages */
@page :left {
margin-top: 4in;
}
/* Targets all odd-numbered pages */
@page :right {
size: 11in;
margin-top: 4in;
}
/* Targets all selectors with `page: wide;` set */
@page wide {
size: a4 landscape;
}
@page {
/* margin box at top right showing page number */
@top-right {
content: "Page " counter(pageNumber);
}
}
Свойства страницы
Правило @page может содержать только дескрипторы страницы и правила полей. Следующие дескрипторы реализованы хотя бы в одном браузере:
-
margin - Задаёт поля страницы. Также можно использовать отдельные свойства полей:
margin-top,margin-right,margin-bottomиmargin-left. -
page-orientation - Задаёт ориентацию страницы. Это не влияет на макет страницы: поворот применяется после создания макета в выходном формате.
-
size - Задаёт целевой размер и ориентацию содержащего блока блока страницы. В общем случае, когда один блок страницы выводится на один лист, он также задаёт размер целевого листа.
В спецификации упоминаются следующие CSS-свойства, применимые к блокам страниц через правило @page. Однако они пока не поддерживаются ни одним пользовательским агентом.
Остальные свойства страницы
| Функция | CSS-свойства | | --------------------- | --------------------- | | свойства bidi | direction | | свойства фона | background-color | | | background-image | | | background-repeat | | | background-attachment | | | background-position | | | background | | свойства границ | border-top-width | | | border-right-width | | | border-bottom-width | | | border-left-width | | | border-width | | | border-top-color | | | border-right-color | | | border-bottom-color | | | border-left-color | | | border-color | | | border-top-style | | | border-right-style | | | border-bottom-style | | | border-left-style | | | border-short-style | | | border-top | | | border-right | | | border-bottom | | | border-left | | | border | | свойства счётчиков | counter-reset | | | counter-increment | | цвет | color | | свойства шрифта | font-family | | | font-size | | | font-style | | | font-variant | | | font-weight | | | font | | свойства высоты | height | | | min-height | | | max-height | | высота строки | line-height | | свойства полей | margin-top | | | margin-right | | | margin-bottom | | | margin-left | | | margin | | свойства контура | outline-width | | | outline-style | | | outline-color | | | outline | | свойства внутренних отступов | padding-top | | | padding-right | | | padding-bottom | | | padding-left | | | padding | | кавычки | quotes | | свойства текста | letter-spacing | | | text-align | | | text-decoration | | | text-indent | | | text-transform | | | white-space | | | word-spacing | | видимость | visibility | | свойства ширины | width | | | min-width | | | max-width |Описание
Правило @page задаёт свойства блока страницы. К правилу @page можно обращаться через интерфейс объектной модели CSS CSSPageRule.
Примечание: W3C обсуждает способы работы с единицами <length>, связанными с областью просмотра, vh, vw, vmin и vmax. Пока не используйте их внутри правила @page.
Связанные свойства
Правило @page позволяет присвоить правилу имя, которое затем указывается в объявлении с помощью свойства page.
-
page - Позволяет селектору использовать пользовательскую именованную страницу
Формальный синтаксис
Где <page-body> включает:
- свойства страницы
- свойства полей страницы
а <pseudo-page> представляет следующие псевдоклассы:
Правила полей
Правила полей используются внутри правила @page. Каждое из них выбирает отдельную область печатной страницы документа и оформляет её на основе значений свойств, заданных в блоке стилей:
@page {
@top-left {
/* page-margin-properties */
}
}
@top-left выбирает верхний левый угол документа и применяет изменения на основе заданных свойств полей страницы.
Другие правила полей:
@top-left-corner @top-left @top-center @top-right @top-right-corner @bottom-left-corner @bottom-left @bottom-center @bottom-right @bottom-right-corner @left-top @left-middle @left-bottom @right-top @right-middle @right-bottom
Свойства полей страницы
Свойства полей страницы — это набор CSS-свойств, которые можно задавать в любом отдельном правиле полей. К ним относятся:
Свойства полей страницы
| Функция | CSS-свойства | | --------------------- | --------------------- | | свойства bidi | direction | | свойства фона | background-color | | | background-image | | | background-repeat | | | background-attachment | | | background-position | | | background | | свойства границ | border-top-width | | | border-right-width | | | border-bottom-width | | | border-left-width | | | border-width | | | border-top-color | | | border-right-color | | | border-bottom-color | | | border-left-color | | | border-color | | | border-top-style | | | border-right-style | | | border-bottom-style | | | border-left-style | | | border-short-style | | | border-top | | | border-right | | | border-bottom | | | border-left | | | border | | свойства счётчиков | counter-reset | | | counter-increment | | содержимое | content | | цвет | color | | свойства шрифта | font-family | | | font-size | | | font-style | | | font-variant | | | font-weight | | | font | | свойства высоты | height | | | min-height | | | max-height | | высота строки | line-height | | свойства полей | margin-top | | | margin-right | | | margin-bottom | | | margin-left | | | margin | | свойства контура | outline-width | | | outline-style | | | outline-color | | | outline | | свойства внутренних отступов | padding-top | | | padding-right | | | padding-bottom | | | padding-left | | | padding | | кавычки | quotes | | свойства текста | letter-spacing | | | text-align | | | text-decoration | | | text-indent | | | text-transform | | | white-space | | | word-spacing | | вертикальное выравнивание | vertical-align | | видимость | visibility | | свойства ширины | width | | | min-width | | | max-width | | z-индекс | z-index |Именованные страницы
Именованные страницы позволяют задавать макет для каждой страницы отдельно и декларативно добавлять разрывы страниц при печати.
Именованные страницы можно применять с помощью свойства page. Это позволяет создавать различные конфигурации страниц для макетов печати.
Пример можно найти в примерах для page.
Примеры
Изменение ориентации страницы с помощью свойства size
В этом примере показано, как разделить <section> на отдельные страницы в формате landscape, задав для каждой страницы поля размером 20% при печати. Нажатие кнопки печати откроет диалоговое окно печати, в котором разделы HTML будут разбиты на отдельные страницы.
<button>Print page</button>
<article>
<section>
<h2>Header one</h2>
<p>Paragraph one.</p>
</section>
<section>
<h2>Header two</h2>
<p>Paragraph two.</p>
</section>
<section>
<h2>Header three</h2>
<p>Paragraph three.</p>
</section>
</article>
const button = document.querySelector("button");
button.addEventListener("click", () => {
window.print();
});
@page {
size: landscape;
margin: 2cm;
}
section {
page-break-after: always;
break-after: page;
}
@media print {
button {
display: none;
}
}
body {
font-family: "Helvetica", sans-serif;
background-color: silver;
}
article {
width: 100%;
}
section {
display: grid;
background-color: white;
border-radius: 0.6rem;
justify-items: center;
padding: 1rem;
width: 50%;
print-color-adjust: exact;
-webkit-print-color-adjust: exact;
margin: 0 auto;
margin-block-end: 1rem;
border: 1px dashed;
}
Примеры псевдоклассов @page
Примеры различных псевдоклассов правила @page см. здесь.
Спецификации
| Спецификация |
|---|
| Модуль CSS Paged Media, уровень 3 # at-page-rule |
| Модуль CSS Logical Properties and Values, уровень 1 # page |
Совместимость с браузерами
| Настольные компьютеры | Мобильные устройства | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome для Android | Firefox для Android | Opera для Android | Safari на iOS | Samsung Internet | WebView для Android | WebView на iOS | |
page |
2 |
12 |
19 |
6 |
18.2 |
18 |
19 |
14 |
18.2 |
1.0 |
37 |
18.2 |
bottom-center |
131 |
131 |
Нет |
116 |
Нет |
131 |
Нет |
87 |
Нет |
29.0 |
131 |
Нет |
bottom-left |
131 |
131 |
Нет |
116 |
Нет |
131 |
Нет |
87 |
Нет |
29.0 |
131 |
Нет |
bottom-left-corner |
131 |
131 |
Нет |
116 |
Нет |
131 |
Нет |
87 |
Нет |
29.0 |
131 |
Нет |
bottom-right |
131 |
131 |
Нет |
116 |
Нет |
131 |
Нет |
87 |
Нет |
29.0 |
131 |
Нет |
bottom-right-corner |
131 |
131 |
Нет |
116 |
Нет |
131 |
Нет |
87 |
Нет |
29.0 |
131 |
Нет |
left-bottom |
131 |
131 |
Нет |
116 |
Нет |
131 |
Нет |
87 |
Нет |
29.0 |
131 |
Нет |
left-middle |
131 |
131 |
Нет |
116 |
Нет |
131 |
Нет |
87 |
Нет |
29.0 |
131 |
Нет |
left-top |
131 |
131 |
Нет |
116 |
Нет |
131 |
Нет |
87 |
Нет |
29.0 |
131 |
Нет |
page-orientation |
85 |
85 |
122 |
71 |
Нет |
85 |
122 |
60 |
Нет |
14.0 |
85 |
Нет |
right-bottom |
131 |
131 |
Нет |
116 |
Нет |
131 |
Нет |
87 |
Нет |
29.0 |
131 |
Нет |
right-middle |
131 |
131 |
Нет |
116 |
Нет |
131 |
Нет |
87 |
Нет |
29.0 |
131 |
Нет |
right-top |
131 |
131 |
Нет |
116 |
Нет |
131 |
Нет |
87 |
Нет |
29.0 |
131 |
Нет |
size |
15 |
79 |
95 |
15 |
18.2 |
18 |
95 |
14 |
18.2 |
1.5 |
37 |
18.2 |
top-center |
131 |
131 |
Нет |
116 |
Нет |
131 |
Нет |
87 |
Нет |
29.0 |
131 |
Нет |
top-left |
131 |
131 |
Нет |
116 |
Нет |
131 |
Нет |
87 |
Нет |
29.0 |
131 |
Нет |
top-left-corner |
131 |
131 |
Нет |
116 |
Нет |
131 |
Нет |
87 |
Нет |
29.0 |
131 |
Нет |
top-right |
131 |
131 |
Нет |
116 |
Нет |
131 |
Нет |
87 |
Нет |
29.0 |
131 |
Нет |
top-right-corner |
131 |
131 |
Нет |
116 |
Нет |
131 |
Нет |
87 |
Нет |
29.0 |
131 |
Нет |
См. также
- Свойство
page - Дескриптор
@pagesize - Модуль CSS paged media
- [META] CSS Paged Media Module Level 3 Bugzilla для отслеживания хода работы над этой темой (счётчики, основанные на страницах, и т. д.)
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/At-rules/@page