8

我有一个包含 2 个样式表的网页:

<link rel="stylesheet" href="/assets/css/screen.css" type="text/css" media="all" />
<link rel="stylesheet" href="/assets/css/print.css" type="text/css" media="print" />

打印样式适用于 chrome、safari、firefox 和 IE9,但在 IE7 和 IE8 中完全中断。某些应该隐藏的图像不是,其他应该可见的图像不是。它看起来像一团糟,尽管如果我在 IE7 和 IE8 中为屏幕加载两个样式表,一切看起来都完全符合我的预期。

不幸的是,我无法链接到该页面,因为它是一个正在进行中的客户站点,但如果有人有任何想法,我会在这里抓住稻草。

4

4 回答 4

14

事实证明,问题在于 HTML5 元素在打印时没有正确呈现,并且 HTML5 shiv 默认不支持打印。

对我(和你)来说幸运的是,这里有一个由 Alexander Farkas 制作的 IE 打印保护插件:https ://github.com/aFarkas/html5shiv

编辑:

如果您使用 Modernizr 来满足您所有的 shiv-ing(完全是一个词)需求,看起来 Modernizr 现在有一个打印 shiv 选项:http: //modernizr.com/download/

于 2012-05-21T15:30:49.580 回答
1

我认为您需要将打印样式表示为备用...

<link rel="stylesheet" href="/assets/css/screen.css" type="text/css" media="all" />
<link rel="alternate stylesheet" href="/assets/css/print.css" type="text/css" media="print" />

实际上,我认为这是错误的,但我要离开它。

您可以尝试将打印样式的媒体属性更改为全部,然后在打印媒体查询中将所有内容包装在样式表中:

@media print { … }
于 2012-05-17T21:40:04.533 回答
1

这真的是在没有看到你的 CSS 和标记的情况下在黑暗中拍摄,或者至少是其中的一部分!

与此 msdn 文章position:absolute的评论中所述或fixed所指出的打印元素存在问题;暗示您应该手动重排它们(设置或可能完全隐藏元素)。处理它的一个核心方法是添加position:static

* {position:static !important;}

给你的print.css;但它的适当性取决于页面的复杂性以及您希望它如何打印(即仅文本、标题和徽标或适当设计的体验)。

如果您还没有决定要产生的打印体验,请考虑阅读另一篇关于 alistpart 的精彩文章,重点关注这一点!

于 2012-05-17T22:27:48.233 回答
0

仅供参考,我在 IE9 和“替代”中遇到了这个问题,即

<link rel="alternate stylesheet" href="......." type="text/css" media="print" />

在 IE9 中为我工作!

于 2014-03-10T02:45:11.863 回答