2011-11-17 70 views
2

在其他主题中,我发现IE/FF doesn't print background images by default。现在,这是一个耻辱,因为背景图片添加一些可能性,是非常难以重现经典<img>标签:如何在IE/FF中添加用于打印的背景图像?

  • 您可以水平和垂直
  • 您可以裁剪他们对准他们,如果他们是大于目标元素(这也使CSS精灵的想法)

现在,这不是不可能的事,但它需要我有印刷和正常的页面不同的HTML布局和打印布局将是相当过于复杂(因为我将不得不使用<table>来实现verti校准)。此外,CSS精灵的好处将会丢失。

有没有希望?我收集@media print没有帮助,但没有其他的东西,也许是特定于浏览器的,可以让人说:“是的,这不是一个正常的背景,即使在打印视图中它也需要在那里“?

+0

据我所知,这是不可能的,但希望堆栈溢出的人会知道一个聪明的把戏。 –

+0

你打印的是什么?某种报道? – thirtydot

+0

@Paul D. Waite - 因此,关于SO的问题。 Google的结果看起来很压抑。 :P –

回答

1

不可能。你将不得不如何将你的背景图片转换为img或使用Canvas。当然,使用画布取决于你支持哪个IE。

它是一个限制打印背景图像的浏览器设置。我认为其背后的逻辑是,供应商希望为用户提供打印背景图像的选项,并确保Web开发人员不能通过某种脚本来改变这些设置。

+0

似乎对我来说是一个奇怪的决定。我应该认为,这样的东西会打破大多数当代网页。但我想这会是一种宗教辩论。我仍然认为至少包含一个覆盖选项是有意义的。或者,更好的是 - 尊重那些在'media:print'类型的样式表中指定的背景图像 - 毕竟,这很清楚地表明该页面是_meant_被打印的特定背景图像。 –

+0

打印背景图像花费大量墨水。用户可以随时选择打印这些设置。通常当你打印你想要的文字而不是背景图像时,这是浪费墨水。 如果您正在制作一个使用CSS样式表的应用程序来制作一些令人惊喜的内容,包括有关用户如何启用后台打印的说明。 – Tschallacka

0

作为一般规则,背景图像应该保留用于添加到页面设计中,但对于理解内容并不重要。因此,当页面打印时它们是否丢失应该没有关系。如果某些东西(如产品镜头)很重要,那么它应该被包含为一个实际的图像(这有助于更容易访问)。

你可以看看包含图像,然后使用CSS隐藏它,并复制作为背景图像(也许动态使用JS)?这样,您可以确保图像本身在您的打印样式表中显示,并且您可以获得背景图像带来的好处。我创建了一个非常简单的例子here

+0

由于背景图片提供的附加功能,它作为背景图片存在。如果我将其转换为简单图像(保留与其他方式相同的布局),则不需要保留背景图像并为切换做了额外的工作。 很高兴认为只要在内容的任何位置都可以使用图像,但只要它们(''和'')提供了这些完全不同的功能,它们都不是真正的替代品对于彼此。 –

+0

“背景色”更糟糕,因为它根本没有替代品。你打算如何在没有背景颜色的打印输出中突出显示内容? –

+0

我同意 - 我更多地指出(由浏览器供应商提供的)导致默认的bg图像未被打印的思想。你可以看看插入图像(使用JS)作为伪元素?这是我唯一可以想到在打印样式表中显示图像的唯一方法,它不在HTML中。我恐怕没有真正给你提供很多解决方案。 – CherryFlavourPez