HTML5元素在IE8中打印时会丢失CSS类

HTML5元素在IE8中打印时会丢失CSS类,css,html,printing,internet-explorer-8,preview,Css,Html,Printing,Internet Explorer 8,Preview,我需要在IE8中支持相当漂亮的打印。今天我遇到了一个问题,页面使用了一些HTMl5功能(部分)和CSS。该问题仅在打印时出现。看看下面的例子,它应该会生成一些带下划线的文本。那很好。但在打印时,它没有下划线。这可以通过将“section”更改为“div”来“修复”,但出于各种原因,我不希望这样做 有人有什么建议吗?在打印预览期间执行javascript时,这似乎不是问题,因为我可以将“window.onload”事件添加到页面中,使其在div中填充内容,这在打印预览中效果很好。而普通CSS在打印

我需要在IE8中支持相当漂亮的打印。今天我遇到了一个问题,页面使用了一些HTMl5功能(部分)和CSS。该问题仅在打印时出现。看看下面的例子,它应该会生成一些带下划线的文本。那很好。但在打印时,它没有下划线。这可以通过将“section”更改为“div”来“修复”,但出于各种原因,我不希望这样做

有人有什么建议吗?在打印预览期间执行javascript时,这似乎不是问题,因为我可以将“window.onload”事件添加到页面中,使其在div中填充内容,这在打印预览中效果很好。而普通CSS在打印预览中效果良好;如果我没有将“.SigLine”嵌套在“.Signature”中,那么它在打印预览中就可以正常工作。但是,似乎“部分”标签的CSS类被忽略了,因此嵌套的“SIGLIN”DIV不认为自己是一个“签名”元素的孩子。 下面是一个完整的工作示例

<html>
<head>
    <!--[if lt IE 9]>
    <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
    <![endif]-->

    <style type="text/css" media="screen,print">
        .Signature .SigLine{border-bottom:solid 1px #000} 
    </style>
</head>
<body>

<section class="Signature"> <!-- Make this a <div> and everything's fine... -->
<div class="SigLine" style="width: 400px;">I should be underlined...</div>
</section>

</body>
</html>

.Signature.SigLine{边框底部:实心1px#000}
我应该在下面划线。。。

不要使用子类调用。直接打电话给SigLine

<style type="text/css" media="screen,print">
    .SigLine{border-bottom:solid 1px #000} 
</style>

.SigLine{边框底部:实心1px#000}

如果允许的话,我会将蒂姆的上述评论标记为答案,因为它让我去寻找Modernizer的打印垫片,这让我找到了,然后。通过在我的示例中包含js文件,它解决了我在IE8中的打印问题。我不确定使用这个shiv是否会有任何其他的副作用,但它确实解决了我的具体问题


谢谢你,蒂姆。

你必须将这个标签包含到你的HTML代码中,并创建一个名为print的css文件,然后你必须为IE8编写特定的css代码,这叫做@media print query

<!--[if lte IE 8]>
<link rel="stylesheet" media="print" href="/print.css" type="text/css" />
<![endif]-->

请注意,当您打印时,HTML5shiv不支持IE8。为了在IE8中正确打印,您还必须在文档中包含HTML5shiv.print。
您可以从获取它,也可以从Github使用它

我注意到Modernizr也有相同的行为,这需要添加特定的打印填充脚本。不确定您的兼容脚本是否需要相同的格式?顺便说一下,您缺少doctype…我花了几天时间试图找出IE8为什么不支持我为打印媒体设置的样式。我想,因为我已经包含了html5 shiv和css,用于将html5元素映射到块元素,所以它将按预期工作。不,不是IE8。最后,找到了这篇文章,这篇文章支持希夫的现代化印刷。谢谢你的建议,但我在我的原始帖子中提到“如果我没有将“.SigLine”嵌套在“.Signature”中,那么它在打印预览中就可以正常工作”。在这个小示例中,显然不需要对CSS类进行组网,但在实际系统中,这将是一个不切实际的约束。