IE从CSS Boilerplate打印空白页

时间:2012-08-24 14:29:51

标签: css printing internet-explorer-8 internet-explorer-9 media-queries

我公司正在使用print.css进行打印。另外,我们有另一个style.css覆盖任何其他.css文件,包括print.css。出于某种原因,当来自html5样板(位于覆盖文件中)的@media打印查询打开时,IE8和IE9正在打印空白页。当它被注释掉时,没有问题。这是什么问题?我们想从样板文件中留下@media print。

PRINT.CSS

@media print
{
body *
{
    visibility:hidden;
}

#basicShell #main,
#basicShell #main *,
.basicShell_container .content,
.basicShell_container .content *,
#mainShell_container .center_columnContent,
#mainShell_container .center_columnContent *
{
    visibility:visible;
}

#basicShell #main,
.basicShell_container .content,
#mainShell_container .center_columnContent
{
    position:absolute;
    left:0;
    top:0;
}
}

STYLE.CSS(覆盖所有内容)

@media print {
* { background: transparent !important; color: black !important; text-shadow: none    
!important; filter:none !important; -ms-filter: none !important; float: none 
!important;} /* Black prints faster: h5bp.com/s */
a, a:visited { text-decoration: underline; }
a[href]:after { content: " (" attr(href) ")"; }
abbr[title]:after { content: " (" attr(title) ")"; }
.ir a:after, a[href^="javascript:"]:after, a[href^="#"]:after { content: ""; }  /*  
Don't show links for images, or javascript/internal links */
pre, blockquote { border: 1px solid #999; page-break-inside: avoid; }
thead { display: table-header-group; } /* h5bp.com/t */
tr, img { page-break-inside: avoid; }
img { max-width: 100% !important; }
@page { margin: 0.5cm; }
p, h2, h3 { orphans: 3; widows: 3; }
h2, h3 { page-break-after: avoid; }
}

3 个答案:

答案 0 :(得分:6)

我遇到了与HTML5 Boilerplate相同的问题。

就我而言,事实证明是这一行:

tr { page-break-inside: avoid; }

导致IE8 / 9中的空白页面。该页面在标签中有大量内容(超过一页的价值),IE决定通过跳过页面并切断内容来处理它。呸。

为了避免弄乱HTML5 Boilerplate,我在自己的样式表中添加了以下内容,并解决了问题:

tr { page-break-inside: auto; }

您的问题可能是由于标记不同,因此请检查设置page-break-inside属性的任何内容。

答案 1 :(得分:1)

print.css中的第一条规则使body的所有子元素都不可见。意图似乎是将一些元素变为可见,但显然这是失败的,可能是因为标记(未公开)不以预期的方式使用idclass属性。

答案 2 :(得分:1)

您必须考虑在您的网站中加载的样式表的优先级。目前,您已在print.css样式表中声明了这一点:

body * {
    visibility:hidden;
}

该规则基本上隐藏了文档中的“所有内容”。您提到styles.css样式表应该覆盖所有内容,但是样式表在标题中加载的顺序是什么?如果print.css表位于style.css表之后,则第一个的规则将被采用。

您的链接参考中也包含media类型的情况,我不知道哪个类型具有更好的优先级;链接媒体类型或媒体查询。