@page规则可以在打印@media内部使用吗?



我的 CSS 中有类似以下内容的内容,以便对不支持 style 标签的 media 属性的 edit styles 书签友好,因此,我明确使用@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 */ } 

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

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

根据MDN的说法,浏览器支持是相当新的,SO证实,尽管这是1998年原始CSS2建议的一部分,几乎没有变化。

引用另一个SO答案:

现在,这里的实际问题是嵌套的@media规则在 CSS2.1 中无效,因为不允许@media规则中嵌套任何 at-rules。

但是,根据CSS3规范是可能的,如前面的答案所述。我认为您可以将此规则安全地移动到@media print规则之外,因为其本身用于打印文档。引用自MDN:

@page CSS 规则用于在打印文档时修改某些 CSS 属性。

最新更新