从历史上看,由于它们是用户设置而不是您可以控制的页面的一部分,因此使这些内容消失曾经是不可能的。
然而,自2017年以来,@page
at-rule已经被标准化,可以用于在现代浏览器中隐藏页面标题和日期:
@page { size: auto; margin: 0mm; }
在打印 Web 文档时,边距设置在浏览器的“页面设置”(或“打印设置”)对话框中。这些边距设置虽然在浏览器内部设置,但是由操作系统/打印机驱动程序控制,并且无法在 HTML/CSS/DOM 级别上进行控制。(有关使用 CSS 控制打印页眉页脚,请参阅打印页眉。)
这些设置必须足够大,以包含打印机的物理非打印区域。此外,它们必须足够大,以包含通常配置为打印的页眉和页脚(通常包括页面标题、页码、URL 和日期)。请注意,这些页眉和页脚虽然由浏览器指定并且通常可通过用户首选项进行配置,但它们不是网页本身的一部分,因此不能通过 CSS 进行控制。在 CSS 方面,它们属于“页面框 CSS2.1 第13.2节”之外。
...即将边距设置为0会隐藏页面标题,因为标题会被打印在边距中。
感谢Vigneswaran S提供了这个提示。
很简单,只需要使用 CSS。
<style>
@page { size: auto; margin: 0mm; }
</style>
解决页面标题的一个可能的方法:
document.title = "打印页面标题"; window.print();
这个方法在任何浏览器中都可行。
除了来自@Md. Hasibul Huq
的以下解决方案外,没有其他方法适用于我。您可以将其用于不带样式的body
:
@media print {
@page {
margin-top: 0;
margin-bottom: 0;
}
body {
padding-top: 5rem;
padding-bottom: 5rem;
}
}
@page{size:auto; margin:5mm;}
但是这会将页面数量丢失。var originalTitle = document.title;
document.title = "Print page title";
window.print();
document.title = originalTitle;
这样做一旦您打印页面,它就会返回其原始标题。
试试这个;
@media print{
@page {
margin-top: 30px;
margin-bottom: 30px;
}
}
在通过window.print()打印时,在about:blank的位置添加自定义页面标题:添加以下行:
document.write('<head>' +
'<title>' +
'My Title' +
'</title>'+ ...)
有一个功能可以为打印设置单独的样式表,使用
<link type="text/css" rel="stylesheet" media="print" href="print.css">
我不确定它是否符合你的要求。