我的 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 属性。