@page
Ограниченная доступность
Эта функция не является базовой, так как она не работает во всех широко используемых браузерах.
Правило @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>, связанные с viewport, vh, vw, vmin, и vmax. Пока не используйте их в правиле @page.
Связанные свойства
Правило @page позволяет пользователю назначить имя правилу, которое затем вызывается в объявлении с помощью свойства page.
page-
Позволяет селектору использовать пользовательскую именованную страницу
Формальный синтаксис
@page =
@page <page-selector-list>? { <declaration-rule-list> }
<page-selector-list> =
<page-selector>#
<page-selector> =
[ <ident-token>? <pseudo-page>* ]!
<pseudo-page> =
':' [ left | right | first | blank ]
Где <page-body> включает:
- page-properties
- page-margin properties
и <pseudo-page> представляет следующие псевдоклассы:
Правила полей
Предупреждение: Правила полей не реализованы ни одним пользовательским агентом (обновлено: август 2023 г.).
Правила полей используются внутри правила @page. Они каждый нацелены на разные разделы печатной страницы, стилизуя область печатной страницы в соответствии со значениями свойств, заданными в блоке стиля:
@page {
@top-left {
/* page-margin-properties */
}
}
@top-left нацелен на верхний левый угол документа и применяет изменения, основанные на свойствах page-margin.
Другие правила полей включают:
@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, которые можно задать в любом отдельном правиле margin. Они включают:
Свойства отступа страницы
| Функция | Свойства 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 Webpage</button>
<article>
<section>
<h2>Header</h2>
<p>
Lorem ipsum dolor, sit amet consectetur adipisicing elit. Consequatur
facilis vitae voluptatibus odio consequuntur optio placeat? Id, nam sequi
aut in dolorem dolores, laudantium, quasi totam ipsam aliquam quibusdam
velit.
</p>
</section>
<section>
<h2>Header</h2>
<p>
Lorem ipsum dolor, sit amet consectetur adipisicing elit. Consequatur
facilis vitae voluptatibus odio consequuntur optio placeat? Id, nam sequi
aut in dolorem dolores, laudantium, quasi totam ipsam aliquam quibusdam
velit.
</p>
</section>
<section>
<h2>Header</h2>
<p>
Lorem ipsum dolor, sit amet consectetur adipisicing elit. Consequatur
facilis vitae voluptatibus odio consequuntur optio placeat? Id, nam sequi
aut in dolorem dolores, laudantium, quasi totam ipsam aliquam quibusdam
velit.
</p>
</section>
</article>
CSS
@page {
size: landscape;
margin: 20%;
}
section {
page-break-after: always;
break-after: page;
}
@media print {
button {
display: none;
}
}
JavaScript
const button = document.querySelector("button");
button.addEventListener("click", () => {
window.print();
});
Результат
Нажатие кнопки печати запустит диалоговое окно печати с разделением разделов html на отдельные страницы.
Примеры псевдоклассов @page
Обратитесь к различным псевдоклассам @page для примеров.
Спецификации
| Спецификация |
|---|
| CSS Paged Media Module Level 3 # at-page-rule |
| CSS Logical Properties and Values Level 1 # page |
Совместимость с браузерами
| Настольный | Мобильный | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | WebView Android | |
@page |
2 | 12 | 19 | 6 | 18.2 | 18 | 19 | 14 | 18.2 | 1.0 | 37 |
bottom-center |
131 | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет |
bottom-left |
131 | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет |
bottom-left-corner |
131 | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет |
bottom-right |
131 | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет |
bottom-right-corner |
131 | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет |
left-bottom |
131 | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет |
left-middle |
131 | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет |
left-top |
131 | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет |
page-orientation |
85 | 85 | предварительная версия | 71 | Нет | 85 | Нет | 60 | Нет | 14.0 | 85 |
right-bottom |
131 | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет |
right-middle |
131 | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет |
right-top |
131 | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет |
size |
15 | 79 | 95 | 15 | 18.2 | 18 | 95 | 14 | 18.2 | 1.5 | 37 |
top-center |
131 | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет |
top-left |
131 | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет |
top-left-corner |
131 | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет |
top-right |
131 | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет |
top-right-corner |
131 | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет |
См. также
- Дескриптор
@pagesize - Свойство
page - См. тикет [META] CSS Paged Media Module Level 3 в Bugzilla для отслеживания прогресса по теме (счётчики на основе страниц и т.д.)
- Модуль CSS paged media
- Paged.js: полифилл для W3C paged media
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/@page