You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CSS中@page的margin属性使用变量时不生效问题求助

CSS变量在@page规则中无法生效的原因

问题代码

:root {
  --main-font: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
  --margin: 10cm;
}

@media print {
  *:not(span) {
    font-family: var(--main-font);
  }
  @page {
    size: A4;
    margin: var(--margin);
  }
}

问题描述

上述代码中,--main-font变量可正常生效,打印时字体按预期变化,但--margin变量无法生效,页边距为默认值。若将@page的margin改为静态值如margin:10cm则可正常工作,请问这是为何?

原因解释

  • @page是控制打印页面布局的专属规则,它不属于网页文档的元素体系,和:root这类文档根元素的作用域完全分离,因此无法访问:root中定义的CSS变量。
  • 而*:not(span)是针对文档内的元素设置样式,这些元素能正常继承:root的变量,所以--main-font可以正常生效。
  • 目前CSS规范明确限制了@page规则不能使用自定义属性(CSS变量),它的属性值仅支持静态数值,无法引用文档树上下文里的变量。

内容的提问来源于stack exchange,提问作者clapmemereview

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 04:35:27