CSS 打印:初学者的全面指南
你好,未来的 CSS 大师们!今天,我们将深入探索 CSS 打印的迷人世界。作为你友好的计算机老师邻居,我很兴奋能带你们踏上这段旅程。不用担心你之前从未写过一行代码——我们将从最基础的内容开始,逐步学习。那么,来一杯咖啡(或者茶,如果你喜欢的话),让我们开始吧!
CSS 打印 - 使用打印样式表
你是否尝试过打印一个网页,结果发现打印出来的内容和屏幕上看到的大不相同?这就是打印样式表的用武之地!它们就像神奇的咒语,将你的网页内容转化为打印机友好的格式。
让我们从一个简单的例子开始:
<head>
<link rel="stylesheet" type="text/css" href="screen.css" media="screen">
<link rel="stylesheet" type="text/css" href="print.css" media="print">
</head>
在这个片段中,我们告诉浏览器为屏幕和打印使用不同的样式表。media
属性是我们的秘密武器。当你在屏幕上查看页面时,它使用 screen.css
。但当你点击打印按钮时,砰!print.css
接管一切。
CSS 打印 - 使用媒体查询和 @page 规则
现在,让我们通过媒体查询和 @page 规则来升级我们的游戏。它们就像是 CSS 打印的动态二人组!
@media print {
body {
font-size: 12pt;
color: #000;
background-color: #fff;
}
@page {
margin: 1in;
}
}
这段代码表示:“浏览器,当你打印时,让文本为 12 磅,黑白颜色,并且四周有 1 英寸的边距。”@media print
部分是我们的媒体查询,而 @page
设置了我们的页面布局。
CSS 打印 - 打印请求检测
如果你的网页能够知道有人正在尝试打印它,那不是很好吗?它可以做到!下面是如何实现:
window.addEventListener('beforeprint', function() {
console.log('正在打印...');
});
window.addEventListener('afterprint', function() {
console.log('打印完成');
});
这段 JavaScript 代码就像是一个小小的间谍,在我们打印开始和结束时向我们耳语。这对于做最后的调整非常方便!
CSS 打印 - 使用 @page 规则
@page 规则就像是控制打印页面的魔法棒。让我们看看它的作用:
@page {
size: A4;
margin: 0;
}
@page :first {
margin-top: 2cm;
}
在这里,我们将所有页面设置为 A4 大小且没有边距,但给第一页一个特别的 2 厘米顶部边距。就像是给你的内容铺设红地毯!
CSS 打印 - 使用 @media 查询
我们之前见过 @media,但让我们深入了解一下:
@media print {
.no-print {
display: none;
}
a[href^="http"]:after {
content: " (" attr(href) ")";
}
}
这段代码隐藏了具有 no-print
类的元素,并且在外部链接后面添加了 URL。就像是有一个私人助理在打印前整理你的网页!
CSS 打印 - 使用 afterprint 事件
记得我们之前的小 JavaScript 间谍吗?让我们让它发挥作用:
window.addEventListener('afterprint', function() {
document.body.style.backgroundColor = 'lightblue';
alert('希望你喜欢你的打印输出!');
});
这段代码在打印后改变背景颜色,并显示一个友好的消息。就像是给你的用户留下一个小小的感谢信!
CSS 打印 - 链接到外部样式表
最后但同样重要的是,让我们回顾一下如何链接到外部打印样式表:
<link rel="stylesheet" type="text/css" href="print.css" media="print">
这行代码是通往打印机友好网页的黄金门票。只需创建一个名为 print.css
的文件,添加你的打印样式,你就可以开始了!
方法 | 描述 | 示例 |
---|---|---|
打印样式表 | 为打印媒体准备的单独 CSS 文件 | <link rel="stylesheet" type="text/css" href="print.css" media="print"> |
媒体查询 | 仅在打印时应用的 CSS 规则 | @media print { body { font-size: 12pt; } } |
@page 规则 | 控制页面特定的属性 | @page { margin: 1in; } |
打印请求检测 | JavaScript 检测打印尝试 | window.addEventListener('beforeprint', function() { ... }); |
afterprint 事件 | JavaScript 在打印后运行代码 | window.addEventListener('afterprint', function() { ... }); |
就这样,朋友们!你已经迈入了 CSS 打印的世界。记住,熟能生巧,所以不要害怕尝试。谁知道呢?你可能会成为打印样式表的毕加索!下次见,快乐编码!
Credits: Image by storyset