@page
åºçº¿
2024
*
æè¿å¯ç¨
èª December 2024 èµ·ï¼æ¤ç¹æ§å·²å¨ææ°æµè§å¨ä¸å¾å°æ¯æãä½å¨è¾æ§çè®¾å¤ææµè§å¨ä¸å¯è½æ æ³è¿è¡ã
* æ¤ç¹æ§çæäºé¨åçæ¯æç¨åº¦å¯è½ææä¸åã
@page at è§åæ¯ä¸ç§ CSS è§åï¼ç¨äºä¿®æ¹æå°é¡µé¢çä¸åæ¹é¢ãå®çç®æ æ¯ä¿®æ¹é¡µé¢çå°ºå¯¸ãæ¹åå页边è·ã@page at è§åå¯ç¨äºé对æå°è¾åºä¸çææé¡µé¢ï¼ä¹å¯ä½¿ç¨å
¶åç§ä¼ªç±»æ¥é对ä¸ä¸ªåéã
è¯æ³
/* é对ææé¡µé¢ */
@page {
size: 8.5in 9in;
margin-top: 4in;
}
/* é对ææå¶æ°é¡µé¢ */
@page :left {
margin-top: 4in;
}
/* é对ææå¥æ°é¡µé¢ */
@page :right {
size: 11in;
margin-top: 4in;
}
/* é对ææè®¾ç½®äº `page: wide;` éæ©å¨çé¡µé¢ */
@page wide {
size: a4 landscape;
}
@page {
/* å³ä¸æ¹çç©ºç½æ¡æ¾ç¤ºé¡µç */
@top-right {
content: "Page " counter(pageNumber);
}
}
页é¢å±æ§
@page at è§ååªè½å
å«é¡µé¢æè¿°ç¬¦åè¾¹è· at è§åãä»¥ä¸æè¿°ç¬¦è³å°å·²å¨ä¸ä¸ªæµè§å¨ä¸å®ç°ï¼
margin-
æå®é¡µè¾¹è·ãä¹å¯ä½¿ç¨é¨å页边è·å±æ§
margin-topãmargin-rightãmargin-bottomåmargin-leftã page-orientation-
æå®ææ¡£å¨é¡µé¢ä¸çæ¹åï¼å 许å®è¿è¡æ£å¸¸çå¸å±åæ ¼å¼åæè ä¹å¯ä»¥å°å ¶åå·¦æåå³æè½¬ã
size-
æå®é¡µé¢æ¡å å«åçç®æ 大å°åæ¹åãé常æ åµä¸ï¼ä¸ä¸ªé¡µé¢æ¡æ¸²æå°ä¸é¡µçº¸ä¸æ¶ï¼å®ä¹ä¼æå®ç®æ 页ç大å°ã
è§è䏿å°ä»¥ä¸ CSS 屿§å¯éè¿ @page at è§ååºç¨äºé¡µé¢æ¡ãä½ç®åè¿æ²¡æä»»ä½ç¨æ·ä»£çæ¯æè¿äºå±æ§ã
å©ä½é¡µé¢å±æ§
| ç¹æ§ | CSS 屿§ |
|---|---|
| bidi 屿§ | direction |
| background 屿§ | background-color |
| background-image | |
| background-repeat | |
| background-attachment | |
| background-position | |
| background | |
| border 屿§ | 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 屿§ | counter-reset |
| counter-increment | |
| é¢è² | color |
| font 屿§ | font-family |
| font-size | |
| font-style | |
| font-variant | |
| font-weight | |
| font | |
| height 屿§ | height |
| min-height | |
| max-height | |
| è¡é« | line-height |
| margin 屿§ | margin-top |
| margin-right | |
| margin-bottom | |
| margin-left | |
| margin | |
| outline 屿§ | outline-width |
| outline-style | |
| outline-color | |
| outline | |
| padding 屿§ | padding-top |
| padding-right | |
| padding-bottom | |
| padding-left | |
| padding | |
| å¼å· | quotes |
| text 屿§ | letter-spacing |
| text-align | |
| text-decoration | |
| text-indent | |
| text-transform | |
| white-space | |
| word-spacing | |
| å¯è§æ§ | visibility |
| width 屿§ | width |
| min-width | |
| max-width |
æè¿°
@page è§åå®ä¹äºé¡µé¢çåç屿§ãå¯ä»¥éè¿ CSS å¯¹è±¡æ¨¡åæ¥å£ CSSPageRule è®¿é® @page at è§åã
夿³¨ï¼W3C æ£å¨è®¨è®ºå¦ä½å¤çåè§å¾çªå£æå
³ç <length> çåä½ï¼vhãvmãvmin å vmaxãç®åï¼è¯·ä¸è¦å¨ @page at è§åä¸ä½¿ç¨å®ä»¬ã
ç¸å ³å±æ§
@page at è§åå
è®¸ç¨æ·ä¸ºè§åæå®ä¸ä¸ªåç§°ï¼ç¶åå¨å£°æä¸ä½¿ç¨ 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> å
å«ï¼
- 页é¢å±æ§
- 页é¢è¾¹è·å±æ§
ä¸ <pseudo-selector> 代表è¿äºä¼ªç±»ï¼
è¾¹è· at è§å
è¦åï¼è¿æ²¡æä»»ä½ç¨æ·ä»£çå®ç°è¾¹è· at è§åï¼æªè³ 2023 å¹´ 8 æï¼ã
è¾¹è· at è§åç¨äº @page at è§åå
é¨ãå®ä»¬åå«éå¯¹ææ¡£æå°é¡µé¢çä¸åé¨åï¼æ ¹æ®æ ·å¼åä¸è®¾ç½®ç屿§å¼å¯¹æå°é¡µé¢çåºåè¿è¡æ ·å¼è®¾ç½®ï¼
@page {
@top-left {
/* 页é¢è¾¹è·å±æ§ */
}
}
@top-left ä»¥ææ¡£çå·¦ä¸è§ä¸ºç®æ ï¼å¹¶æ ¹æ®é¡µé¢è¾¹è·å±æ§è®¾ç½®åºç¨æ´æ¹ã
å ¶ä½è¾¹è· at è§åå å«ï¼
@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
页é¢è¾¹è·å±æ§
页é¢è¾¹è·å±æ§æ¯ä¸ç»å¯ä»¥å¨ä»»ä½åä¸ªè¾¹è· at è§åä¸è®¾ç½®ç CSS 屿§ãå®ä»¬å æ¬ï¼
页é¢è¾¹è·å±æ§
| ç¹æ§ | CSS 屿§ |
|---|---|
| bidi 屿§ | direction |
| background 屿§ | background-color |
| background-image | |
| background-repeat | |
| background-attachment | |
| background-position | |
| background | |
| border 屿§ | 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 屿§ | counter-reset |
| counter-increment | |
| å 容 | content |
| é¢è² | color |
| font 屿§ | font-family |
| font-size | |
| font-style | |
| font-variant | |
| font-weight | |
| font | |
| height 屿§ | height |
| min-height | |
| max-height | |
| è¡é« | line-height |
| margin 屿§ | margin-top |
| margin-right | |
| margin-bottom | |
| margin-left | |
| margin | |
| outline 屿§ | outline-width |
| outline-style | |
| outline-color | |
| outline | |
| padding 屿§ | padding-top |
| padding-right | |
| padding-bottom | |
| padding-left | |
| padding | |
| å¼å· | quotes |
| text 屿§ | letter-spacing |
| text-align | |
| text-decoration | |
| text-indent | |
| text-transform | |
| white-space | |
| word-spacing | |
| ç«ç´å¯¹é½ | vertical-align |
| å¯è§æ§ | visibility |
| width 屿§ | width |
| min-width | |
| max-width | |
| z-index | z-index |
å ·å页é¢
å ·å页é¢å¯ä»¥å¨æå°æ¶ä»¥å£°ææ¹å¼æ§è¡æ¯é¡µå¸å±åæ·»å 页é¢åé符ã
å¯ä½¿ç¨ page 屿§åºç¨å½å页é¢ãè¿æ ·ï¼ç¨æ·å°±å¯ä»¥å建ä¸åç页é¢é
ç½®ï¼ç¨äºæå°å¸å±ã
å¨ page 示ä¾ä¸å¯ä»¥æ¾å°è¿æ¹é¢çä¾åã
示ä¾
>ä½¿ç¨ size 屿§æ´æ¹é¡µé¢æ¹å
æ¬ä¾æ¾ç¤ºäºå¦ä½ä»¥ landscape æ ¼å¼å°å¤ä¸ª <section> å岿å个页é¢ï¼æ¯é¡µæå°æ¶æ 20% ç页边è·ã
HTML
<button>æå°è¯¥é¡µé¢</button>
<article>
<section>
<h2>æ é¢</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>æ é¢</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>æ é¢</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 Module Level 1> # page> |
æµè§å¨å ¼å®¹æ§
åè§
@pagesizeæè¿°ç¬¦page屿§- åé Bugzilla ä¸ç [META] CSS Paged Media Module Level 3 å·¥åï¼ä»¥è¿½è¸ªè¯¥ä¸»é¢ï¼ä¾å¦ï¼åºäºé¡µé¢ç计æ°å¨ï¼ççï¼çè¿å±
- CSS å页åªä½æ¨¡å
- Paged.jsï¼W3C å页åªä½ polyfill