Spec-Zone.ru › CSS

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> представляет следующие псевдоклассы:

  • :blank
  • :first
  • :left
  • :right

Правила полей

Правила полей используются внутри правила @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 см. здесь.

  • :blank
  • :first
  • :left
  • :right

Спецификации

Спецификация
Модуль 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
  • Дескриптор @page size
  • Модуль 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API