CSS @page规则详解
一、什么是CSS @page规则
CSS @page规则指的是用于控制打印文档的CSS样式规则,可以为打印文档设置不同的页眉、页脚、页面大小、打印方向、页面边距等样式。
1.1 语法
CSS @page规则的语法如下:
@page :pseudo-class {
/* 声明 */
}
其中,:pseudo-class 是伪类选择器,可以用来控制不同的打印状态,如 :first 用来控制打印第一页的样式,:left 和 :right 用来控制打印偶数页和奇数页的样式。
1.2 @page嵌套规则
CSS @page规则可以包含一组子规则,用于设置特定区域的样式。
@page :first {
margin: 2cm;
@top-center {
content: "Page Header";
}
@bottom-left {
content: "Page " counter(page);
}
}
上面的代码中,@top-center 和 @bottom-left 就是子规则,用于分别设置打印文档的页眉和页脚。
二、常用CSS @page属性详解
2.1 size属性
size属性用于设置打印文档的页面大小,可以取值为 auto(默认)、A3、A4、A5、B4、B5、letter、legal等。也可以使用自定义大小,如:
@page {
size: 21cm 29.7cm; /* 定义文档的大小为A4 */
}
2.2 margin属性
margin属性用于设置打印文档的边距,可以取值为 auto(默认)、inherit、设置具体数值等。可以使用 margin-top、margin-bottom、margin-right、margin-left 属性分别设置上下左右的边距。
@page {
margin-top: 2cm;
margin-left: 3cm;
}
2.3 @top-left、@top-right、@top-center、@bottom-left、@bottom-right、@bottom-center属性
这些属性用于设置打印文档的页眉和页脚样式。可以使用 content 属性为页眉和页脚添加文本内容,还可以使用 counter(page) 属性添加自动生成的页码。
@page {
@top-left {
content: "My website";
}
@bottom-center {
content: "Page " counter(page);
}
}
2.4 page-break-before、page-break-after属性
这两个属性用于控制分页,即在哪些元素之前或之后插入分页符。可以取值为 auto(默认)、always、avoid、left、right等。
h1 {
page-break-before: always;
}
上面的代码表示在每个h1元素之前都插入分页符。
2.5 page-break-inside属性
这个属性用于控制打印文档分页时元素的处理方式,可以取值为 auto(默认)、avoid等。
p {
page-break-inside: avoid;
}
上面的代码表示p元素不被允许出现在分页前或分页后。
三、浏览器兼容性
CSS @page规则在不同浏览器中的兼容性有所差别,比较成熟的浏览器如Chrome、Firefox等都支持CSS @page规则。但是由于IE浏览器的打印机设置比较古老,因此部分CSS @page规则属性可能不被支持,需要开发者手动调整。
四、总结
CSS @page规则可以为打印文档设置丰富的样式,包括页面大小、边距、页眉、页脚、分页符等样式,开发者可以根据实际需求灵活运用。需要注意的是,在不同浏览器中可能存在浏览器兼容性问题,需要开发者进行兼容性测试和调整。