可以在@media print中使用@page规则吗?

时间:2014-02-24 14:38:10

标签: css printing stylesheet printing-web-page

我的CSS中有以下内容,以便对edit styles bookmarklet友好,该书签不支持media标记的style属性,因此,我明确地使用@media print作为整个风格。

@media print {

  @page {
margin: 1cm;
margin-top: 12mm;
size: portrait;
  }
  body {
font: 9.3pt "Hoefler Text", "Franklin Gothic Book", sans-serif;
max-width: 80em;
border: 0;
margin: 0 auto;
padding: 0;
  }
  /* more stuff here */
}

然而,似乎http://jigsaw.w3.org/css-validator/#validate_by_input不喜欢这样,产生以下错误:

7       Parse Error @page { margin: 1cm; margin-top: 12mm; size: portrait; }
16      Parse Error /* more stuff here */ } 

但是,如果我将the @page rule移到@media print之外,则不会报告任何错误。

我做错了什么,或者这是验证器中的错误?

According to MDN, browser support is pretty newSO confirms,尽管已经part of the original CSS2 recommendation from 1998,但几乎没有变化。

1 个答案:

答案 0 :(得分:1)

引用另一个SO answer

  

现在,这里的实际问题是嵌套的@media规则是not valid in CSS2.1,因为您不允许在{{1}内嵌套任何 at规则规则。

然而,根据CSS3 spec是可能的,如前面的答案所述。我认为您可以在@media规则之外安全地移动此规则,因为它本身就是打印文档。引自MDN

  

@media print CSS at-rule用于在打印文档时修改一些CSS属性。