@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

css
/* 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-bottommargin-left cũ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, vminvmax. 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

<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:

css
@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:

css
@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ẻ.

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>
js
const button = document.querySelector("button");

button.addEventListener("click", () => {
  window.print();
});
css
@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