为什么我的打印样式没有在IE 7和IE 8中呈现?

时间:2012-05-17 21:36:38

标签: css internet-explorer internet-explorer-8 print-style

我有一个包含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 个答案:

答案 0 :(得分:14)

事实证明,问题是HTML5元素没有正确打印,HTML5 shiv默认不支持打印。

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

编辑:

如果您使用Modernizr满足您的所有需求({3}}

,那么Modernizr现在看起来有一个打印shiv选项

答案 1 :(得分: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" />

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

您可以尝试将打印样式的媒体attr更改为all,然后将样式表中的所有内容包装在打印介质查询中:

@media print { … }

答案 2 :(得分:1)

在没有看到你的css和标记的情况下,它真的是一个黑暗的镜头,或者至少是它的一大块!

position:absolute的评论中提到fixedposition:static的打印元素存在问题;意味着你应该手动重排它们(设置* {position:static !important;} 或者可能完全隐藏元素)。处理它的一个硬核方法是添加

print.css

到{{1}};但它的适当性取决于页面的复杂程度以及您希望如何打印(例如文本,标题和徽标或正确设计的体验)。

如果您还没有决定要制作的印刷体验,请考虑阅读另一个专注于此的this msdn article

答案 3 :(得分:0)

仅供参考我在IE9和#39;替代&#39;中有这个问题,即

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

在IE9中为我工作!