代码之家  ›  专栏  ›  技术社区  ›  Franc

为什么CSS@页面属性不起作用?

  •  0
  • Franc  · 技术社区  · 3 年前

    根据 specifications 对于CSS Paged Media,应该可以执行以下操作

    @media print {
      @page {
        size: a4;
        background: green;
      }
    }
    

    此类陈述的证据是 Example 9 存在于规范中,并且在 Appendix A .

    然而,不幸的是,似乎不可能实现这样的目标:显然所有的属性都被忽略了,我无法获得期望的结果(在没有解决方案的情况下设置页面的背景)。

    根据 CanIUse 这个 @page 规范应该至少得到Firefox(抛开一些次要功能)和Chromium/Chrome的支持,我目前正在测试这些行为。

    你对这种奇怪的行为有线索或想法吗?是否有可能浏览器当前没有遵守规范?

    编辑: 在里面 MDN 明确规定除 size margin 不支持。我仍然想知道为什么没有人关心眼镜。

    0 回复  |  直到 3 年前
        1
  •  0
  •   Dai    3 年前

    根据 the specifications 对于CSS Paged Media,应该可以执行以下操作

    你链接到的规范并不表明你发布的CSS是有效的,相反,它指出(强调我的):

    如果 size 属性声明由限定 宽度、高度、设备宽度、设备高度、纵横比、设备纵横比或定向媒体查询 (或其他取决于纸张大小的条件), 则必须忽略声明

    …这是因为。。。

    []介质查询不考虑纸张大小:如果不考虑,则假设所选的纸张大小 @page 指定了规则。


    可以 达到你想要的效果,但不要那样。

    就像这样:

    
    @media print {
        :root {
            background-color: green;
            /* Note that most browsers don't print page background colors at all as it looks awful, regardless of if it's inkjet, color-laser, etc */
        }
    }
    
    @page {
        size: a4;
    }
    
    
        2
  •  0
  •   Franc    2 年前

    最后我用了 Paged.js 随着polyfill绕过我遇到的问题。