CSS 标准支持一些高级格式设置。CSS 中有一个指令,它启用了一些仅适用于分页媒体(如纸张)的格式设置。请参阅 http://www.w3.org/TR/1998/REC-CSS2-19980512/page.html。@page
缺点是不同浏览器中的行为不一致。Safari仍然不支持设置打印机页边距,但所有其他主流浏览器现在都支持它。
使用该指令,您可以指定页面的打印机边距(这与 HTML 元素的正常 CSS 边距不同):@page
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Print Test</title>
<style type="text/css" media="print">
@page
{
size: auto; /* auto is the initial value */
margin: 0mm; /* this affects the margin in the printer settings */
}
html
{
background-color: #FFFFFF;
margin: 0px; /* this affects the margin on the html before sending to printer */
}
body
{
border: solid 1px blue ;
margin: 10mm 15mm 10mm 15mm; /* margin you want for the content */
}
</style>
</head>
<body>
<div>Top line</div>
<div>Line 2</div>
</body>
</html>
请注意,我们基本上禁用了此处特定于页面的边距,以达到删除页眉和页脚的效果,因此我们在正文中设置的边距将不会用于分页符(如Konrad所评论的那样),这意味着只有当打印的内容只有一页时,它才能正常工作。
这在Firefox 3.6,IE 7,Safari 5.1.7或Google Chrome 4.1中不起作用。
设置@page边距确实在IE 8,Opera 10,Google Chrome 21和Firefox 19中起作用。
尽管在这些浏览器中为您的内容正确设置了页边距,但在尝试解决页眉/页脚的隐藏时,该行为并不理想。
这是它在不同浏览器中的行为方式:
-
在Internet Explorer中,此打印的设置中的边距实际上设置为0mm,如果您执行预览,则默认为0mm,但用户可以在预览中更改它。
您将看到页面内容实际上位置正确,但浏览器打印页眉和页脚以非透明背景显示,因此有效地将页面内容隐藏在该位置。
-
在 Firefox 较新版本中,它的位置正确,但同时显示页眉/页脚文本和内容文本,因此它看起来像是浏览器页眉文本和页面内容的不良组合。
-
在 Opera 中,当在标准 css 中使用非透明背景时,页面内容会隐藏页眉,并且页眉/页脚位置与内容冲突。相当不错,但如果将边距设置为一个小值,导致标头部分可见,则看起来很奇怪。此外,页边距设置不正确。
-
在 Chrome 较新版本中,如果@page边距设置得太小,以至于页眉/页脚位置与内容冲突,则浏览器页眉和页脚将被隐藏。在我看来,这正是它应该如何表现的。
因此,结论是Chrome在隐藏页眉/页脚方面具有最佳的实现方式。