@page
Baseline
2024
*
Newly available
Since December 2024, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.
* Some parts of this feature may have varying levels of support.
At-rule @page là một at-rule CSS dùng để chỉnh sửa các khía cạnh khác nhau của trang in. Nó nhắm đến và chỉnh sửa kích thước, hướng và lề của trang. At-rule @page có thể được dùng để nhắm đến tất cả các trang trong bản in hoặc một tập hợp con sử dụng các lớp giả khác nhau của nó.
Cú pháp
/* Nhắm đến tất cả các trang */
@page {
size: 8.5in 9in;
margin-top: 4in;
}
/* Nhắm đến tất cả các trang có số chẵn */
@page :left {
margin-top: 4in;
}
/* Nhắm đến tất cả các trang có số lẻ */
@page :right {
size: 11in;
margin-top: 4in;
}
/* Nhắm đến tất cả các selector có thiết lập `page: wide;` */
@page wide {
size: a4 landscape;
}
@page {
/* hộp lề ở góc trên bên phải hiển thị số trang */
@top-right {
content: "Page " counter(pageNumber);
}
}
Thuộc tính trang
At-rule @page chỉ có thể chứa các mô tả trang và at-rule lề. Các mô tả sau đây đã được triển khai bởi ít nhất một trình duyệt:
margin-
Chỉ định lề của trang. Các thuộc tính lề riêng lẻ
margin-top,margin-right,margin-bottomvàmargin-leftcũng có thể được sử dụng. page-orientation-
Chỉ định hướng của trang. Điều này không ảnh hưởng đến bố cục của trang; việc xoay được áp dụng sau khi bố cục trong phương tiện đầu ra.
size-
Chỉ định kích thước mục tiêu và hướng của khối chứa hộp trang. Trong trường hợp tổng quát, nơi một hộp trang được kết xuất trên một tờ trang, nó cũng chỉ ra kích thước của tờ trang đích.
Thông số kỹ thuật đề cập đến các thuộc tính CSS sau đây có thể áp dụng cho hộp trang thông qua at-rule @page. Tuy nhiên, những thuộc tính này chưa được hỗ trợ bởi bất kỳ tác nhân người dùng nào.
Các thuộc tính trang còn lại
| Tính năng | Thuộc tính CSS |
|---|---|
| bidi properties | direction |
| background properties | background-color |
| background-image | |
| background-repeat | |
| background-attachment | |
| background-position | |
| background | |
| border properties | 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 properties | counter-reset |
| counter-increment | |
| color | color |
| font properties | font-family |
| font-size | |
| font-style | |
| font-variant | |
| font-weight | |
| font | |
| height properties | height |
| min-height | |
| max-height | |
| line height | line-height |
| margin properties | margin-top |
| margin-right | |
| margin-bottom | |
| margin-left | |
| margin | |
| outline properties | outline-width |
| outline-style | |
| outline-color | |
| outline | |
| padding properties | padding-top |
| padding-right | |
| padding-bottom | |
| padding-left | |
| padding | |
| quotes | quotes |
| text properties | letter-spacing |
| text-align | |
| text-decoration | |
| text-indent | |
| text-transform | |
| white-space | |
| word-spacing | |
| visibility | visibility |
| width properties | width |
| min-width | |
| max-width |
Mô tả
Quy tắc @page định nghĩa các thuộc tính của hộp trang. At-rule @page có thể được truy cập thông qua giao diện mô hình đối tượng CSS CSSPageRule.
Note:
W3C đang thảo luận về cách xử lý các đơn vị <length> liên quan đến viewport, vh, vw, vmin và vmax. Trong thời gian đó, không nên sử dụng chúng trong at-rule @page.
Thuộc tính liên quan
At-rule @page cho phép người dùng gán tên cho quy tắc, sau đó được gọi trong một khai báo sử dụng thuộc tính page.
page-
Cho phép một selector sử dụng trang được đặt tên do người dùng định nghĩa
Cú pháp chính thức
@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 ]
Trong đó <page-body> bao gồm:
- thuộc tính trang
- thuộc tính lề trang
và <pseudo-page> đại diện cho các lớp giả sau:
At-rule lề
Các at-rule lề được sử dụng bên trong at-rule @page. Mỗi cái nhắm đến một phần khác nhau của trang tài liệu được in, tạo kiểu cho khu vực của trang in dựa trên các giá trị thuộc tính được đặt trong khối kiểu:
@page {
@top-left {
/* thuộc tính lề trang */
}
}
@top-left nhắm đến phía trên bên trái của tài liệu và áp dụng các thay đổi dựa trên các thuộc tính lề trang được đặt.
Các at-rule lề khác bao gồm:
@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
Thuộc tính lề trang
Các thuộc tính lề trang là tập hợp các thuộc tính CSS có thể được đặt trong bất kỳ at-rule lề riêng lẻ nào. Chúng bao gồm:
Thuộc tính lề trang
| Tính năng | Thuộc tính CSS |
|---|---|
| bidi properties | direction |
| background properties | background-color |
| background-image | |
| background-repeat | |
| background-attachment | |
| background-position | |
| background | |
| border properties | 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 properties | counter-reset |
| counter-increment | |
| content | content |
| color | color |
| font properties | font-family |
| font-size | |
| font-style | |
| font-variant | |
| font-weight | |
| font | |
| height properties | height |
| min-height | |
| max-height | |
| line height | line-height |
| margin properties | margin-top |
| margin-right | |
| margin-bottom | |
| margin-left | |
| margin | |
| outline properties | outline-width |
| outline-style | |
| outline-color | |
| outline | |
| padding properties | padding-top |
| padding-right | |
| padding-bottom | |
| padding-left | |
| padding | |
| quotes | quotes |
| text properties | letter-spacing |
| text-align | |
| text-decoration | |
| text-indent | |
| text-transform | |
| white-space | |
| word-spacing | |
| vertical alignment | vertical-align |
| visibility | visibility |
| width properties | width |
| min-width | |
| max-width | |
| z-index | z-index |
Trang được đặt tên
Các trang được đặt tên cho phép thực hiện bố cục từng trang và thêm ngắt trang theo cách khai báo khi in.
Các trang được đặt tên có thể được áp dụng bằng thuộc tính page. Điều này cho phép người dùng tạo các cấu hình trang khác nhau để sử dụng trong bố cục in.
Một ví dụ về điều này có thể được tìm thấy trong các ví dụ của page.
Ví dụ
>Sử dụng thuộc tính size để thay đổi hướng trang
Ví dụ này cho thấy cách chia các phần tử <section> thành các trang riêng lẻ theo định dạng landscape với mỗi trang có lề 20% khi in.
Nhấp vào nút in sẽ mở hộp thoại in với các phần HTML được chia thành các trang riêng lẻ.
<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;
}
}
Ví dụ lớp giả @page
Xem các lớp giả khác nhau của @page để biết ví dụ.
Thông số kỹ thuật
| Specification |
|---|
| CSS Paged Media Module Level 3> # at-page-rule> |
| CSS Logical Properties and Values Module Level 1> # page> |
Khả năng tương thích trình duyệt
Xem thêm
- Thuộc tính
page - Mô tả
@pagesize - Module phương tiện phân trang CSS
- [META] CSS Paged Media Module Level 3 Bugzilla để theo dõi tiến trình về chủ đề này (bộ đếm dựa trên trang, v.v.)