这已经拖延了很久了……但它终于来了:一个打印样式表!

我将首先向您展示整个样式表,然后我将解释一下我的想法。
body {
font-family: Georgia, serif;
background: none;
color: black;
}
#page {
width: 100%;
margin: 0; padding: 0;
background: none;
}
#header, #menu-bar, #sidebar, h2#postcomment, form#commentform, #footer {
display: none;
}
.entry a:after {
content: " [" attr(href) "] ";
}
#printed-article {
border: 1px solid #666;
padding: 10px;
}
1. 使字体尽可能易读
在网络上,这里文章的正文字体是无衬线字体。 在印刷页面上,我认为衬线字体更容易阅读,因此我将字体族重置为 Georgia。 没有背景和黑色文本是默认设置,但以防万一,我在正文中明确声明了它。
2. 尽可能利用页面空间
同样,我认为这是默认行为,但由于我将内容包装在“页面”标签中,因此我认为我可以利用它来设置 100% 的宽度并删除任何边距和填充。
3. 默认样式对于打印来说并不差
请注意,除了设置字体外,我没有进行任何排版样式。 默认打印样式,我认为,它本身在这方面做得相当不错。 这是假设您使用的是高质量标记。 在我的文章中,标题是<h2>标签,副标题是<h3>标签,正文段落位于<p>标签中。 这将在印刷页面上产生一个不错的字体大小层次结构,而无需任何样式。
代码示例,它们包装在<code>和<pre>标签中,默认情况下会使用等宽字体,这很棒。 无序列表会缩进并添加项目符号。
3. 删除多余的东西
如果有人打印您的文章,很可能是因为他们想将内容保存为参考资料、稍后阅读或与朋友分享。 他们真的不需要看到您的页面导航、侧边栏或花哨的页脚。 再假设您拥有良好且语义标记的代码,删除这些部分就像将这些区域父元素的**显示值**设置为**无**一样简单。
4. 在正文内容中显示 URL
[感谢 David Walsh 提供此想法] 内容中的链接在印刷页面上没有任何作用。 如果您可以用手指轻触链接的词语,它将在您的计算机上打开网页,那会很酷,但这是我连电影里都没见过的东西。 目前,我们只能使用 CSS 伪元素::after
,使用内容属性,将 URL 放在链接旁边。 IE 不支持它,但 c’est la vie。
5. 添加感谢语
在我的内容末尾,我添加了一个小型的“感谢”语。 此区域在网络上隐藏,但在打印文章时显示。 我认为这是一个不错的点缀,它还可以提醒读者应该回到网站上获取最新内容。
6. *可选:* 分页符
我觉得我的文章没有真正需要特定的分页符,但如果您编写了带有副标题的*非常长的*文章,您一定要考虑在每个副标题之前放置分页符。 另一个可以使用分页符的好地方是在一个相当大的表格之前。 没有什么比不得不翻页看表格更糟糕的了,因为表格恰好跨越了两个页面,而它本来可以放在一个页面上的。 我计划根据情况使用这些分页符。 有关分页符的更多信息,请访问 此处的分页符。
所以现在您可以随心所欲地打印我的文章了! 请告诉我您对打印样式表的其他任何建议,或您对我打印样式表的任何意见。
感谢您的提醒,Chris!
至于在哪里使用分页符,这实际上取决于程序员。 对于像您和我的网站这样的博客,我建议在文章结束和评论开始之间放置一个分页符。 这使得用户更容易进行“打印预览”,并且可以轻松排除他们不关心的评论。
不错的文章 - 我在以前的工作中使用过除 #4 之外的所有内容。 但是我将来一定会使用它!
很棒的文章,非常有用。 我可能会在打印样式表中添加另一件事(与 David Walsh 的思路类似),即隐藏文章底部的回复,因为我不想浪费纸张。 希望这有帮助。
David 说得对,我想我会在评论区域之前添加分页符。
@Ian: 我明白你的意思,不想打印评论,但我认为我会默认保留它们。 有时你们在评论中会提交一些很棒的东西,我认为如果人们想要,这些评论应该可以打印。 通过分页符,您可以轻松选择不打印这些评论,但如果我隐藏它们,就无法打印它们。
非常好,我看到有人在使用它,但感谢您的教程。
长期潜水员 ^^ 真的很喜欢这个打印样式表 ^^
尤其是内容:“ [” attr(href) “] ”:D
那里没有多少打印样式表意识到这对我来说意义重大:D 我通常必须在打印后做笔记:P
其他与 David 所说的一样,我发现它已经存在了 ^^
干得好! 保持博客的精彩内容 ^^
您应该使用 **pt** 而不是 **px**。
PD:仅限于文本:P
不错的文章 :) 有趣。
仅仅定义一个打印样式表就足以仅应用打印样式表吗?
不需要有“可打印页面”链接来删除标记!
我无法在我的打印预览中显示有序列表的数字。 它们在网页上显示正确,但我无论如何也弄不清楚在我的 CSS 页面中使用什么样式代码来进行打印。 缩进是存在的,但没有数字。 我做错了什么?
Wes Lyda: 您是否尝试过更改
ol
上的list-style-position
属性,使其值为inside
? 可能是项目符号/数字出现在页面的可见可打印部分之外。 尝试以下任一规则,看看它们是否有效ol {list-style-position: inside;}
ol li {list-style-position: inside;}
我记得我曾经在这里看到过你 Chris 发布的一张打印样式表,但我记不清在哪里了,你能指点一下吗?
谢谢
这很有帮助。不过,打印时我几乎看不到什么差别。