【问题标题】:CSS print background with margin带边距的 CSS 打印背景
【发布时间】:2015-01-08 21:56:01
【问题描述】:

我正在尝试制作一份便于打印的简历。一切正常,除了背景图片的问题。

我不想在打印页面上留出任何边距,否则背景图像看起来很乱: https://www.dropbox.com/s/h2zttd8u6r6hq0g/Screenshot%202015-01-08%2014.38.14.png?dl=0

但是,如果我不使用任何边距,背景看起来不错,但我无法在第二页(或其他页面)上做任何边距: https://www.dropbox.com/s/16vgu3nahfgeipr/Screenshot%202015-01-08%2014.38.55.png?dl=0

body {
    margin: 30px 0;
}

这适用于第一页,但不幸的是,这不适用于任何分页符。有没有办法对打印页面的顶部/底部进行填充/边距?

编辑:对不起这个可怕的例子,但这基本上是代码: http://jsfiddle.net/yugv84qw/

如果您按打印并保存为 pdf(至少在 Chrome 中),您会看到背景填满了整个页面。但是,当您包含

@page {
    margin: 1cm 0;
}

您会看到我想要的边距有效,但背景也使用了该边距。换句话说:我希望背景保持页面填充,而每个页面上的文本都有一个顶部和底部边距。

【问题讨论】:

  • 我已经是了,但这并没有什么不同。那么你会建议如何实施呢?
  • 如果您给出的只是一个 css 属性,这是不可能的。请提供一个完整、可行、最小的示例,我(以及其他任何人)也许可以为您提供更好的建议。
  • 很抱歉,应该添加更多信息。查看编辑。
  • Had the same kind problem 并使用基于 JS 的解决方案解决了它。注意:我的问题是关于首先为打印设备设计的 HTML 文档,但无论如何,您或其他人的问题可能会得到解决。 PS:很抱歉更新了一个 2.5 年前的帖子...

标签: css printing


【解决方案1】:

您受到CSS paged media module 的供应商实施的相当限制,也就是说,您可以通过使用:first 伪选择器来使用该模块来定位第一页,例如:

@page:first {
    margin: 0
}

应该支持/缺乏实现证明是一个问题 - 您需要将内容添加到与输出页面尺寸匹配的一系列元素中,然后删除第一个的边距/填充。

遗憾的是,即使在当今时代,控制网络打印也并非易事。

【讨论】:

  • 感谢您的回复。查看编辑,我添加了一些代码。这是行不通的,因为我希望每一页都有边距,而背景仍然位于页面顶部。
  • I do not want to have any margin on the print pageI am unable to do any margin on the second (or other pages) 另有建议。以上内容需要添加到您的印刷媒体样式中。以上内容仅在第一页上没有边距。我不太清楚你在追求什么。
  • 抱歉没说清楚。我想在每一页上都有一个边距,但仅限于文本。有一个背景图像(参见示例),它需要从页面的最顶部开始。然后我需要一些间距,直到文本真正开始。这是否说明了一点?