8

我之前在处理打印样式表时遇到了 IE8 的问题。我正在使用 HTML5 和几个布局标签,包括页眉、导航和页脚。

由于某种原因,在我的打印样式表中显示:无;这些标签上的声明在 IE8 中被忽略(我只能假设后续的较低版本)。我首先认为 IE9 中的开发人员工具可能会导致错误的表示,但是我在 VirtualBox 中安装了 Windows XP,这也显示了问题。

我猜这是因为 IE9 以下的任何东西都无法正确看到 HTML5 标签。打印样式表隐藏了 Firefox 和 Chrome 中的布局标签。

有没有办法解决这个问题?

编辑:

这是我目前所拥有的:

<link rel="stylesheet" href="<?php echo get_template_directory_uri(); ?>/style.css" type="text/css" media="screen" />
<link rel="stylesheet" href="<?php echo get_template_directory_uri(); ?>/css/print.css" type="text/css" media="print" />

忽略 PHP 语句,它们特定于我的 CMS,即 WordPress。

然后我简单地将布局标签隐藏在 print.css 中:

nav,footer { 
display:none;
}

这适用于 IE9、Firefox、Chrome,但不适用于低于 IE9 的任何设备。它似乎忽略了 HTML5 标签。

4

5 回答 5

14

我建议你试试html5shiv。主要的 shivdocument.createElement()和你一样,但它已经像疯了一样被优化/缩小。更重要的是,它包括printshiv(IE 打印保护器),它可以让您为 HTML5 元素设置样式以进行打印。

于 2012-07-11T12:38:12.673 回答
3

使用Modernizr。在 Extra 中,确保选择了 html5shiv /w printshiv。在您的网站上包含这个 javascript 库,它应该像魅力一样工作。

于 2012-07-10T13:29:48.317 回答
0

由于我所能做的只是猜测而没有实际看到代码,我的第一个猜测是在 css 声明之后使用的 html5 shiv,而 css 只是跳过了 html 5 标签,而不对它们应用 css 样式。尝试将脚本设置在最顶部,在头部的任何 css 链接标签之前。

于 2012-06-27T14:31:50.000 回答
0

您可以通过包含一对函数onbeforeprintonafterprint在其中隐藏/显示应该是display:none.

于 2012-06-27T14:33:53.723 回答
0

我强烈建议使用样板来解决您的麻烦。是一个很好的网络标准汇编和几乎每个浏览器中的一些已知和常见问题。它使用modernizr并有一个很棒的样式表,其中有一个 @media 打印,您可以使用它来解决所有浏览器中的所有打印问题。

于 2012-07-13T07:36:43.207 回答