CSSPageRule: style 属性

styleCSSPageRule 接口的只读属性,返回一个 CSSPageDescriptors 对象。它表示 CSS @page at-规则CSS 声明块,并为页面公开样式信息以及各种与样式相关的 方法和属性。

一个 CSSPageDescriptors 对象,其属性与关联的 @page at-规则 匹配。

注意: 规范的早期版本将此属性定义为 CSSStyleDeclaration。请查看下面浏览器兼容性数据。

示例

检查页面规则

此示例使用 Web API 检查 @page 规则的内容。

CSS

下面我们使用 @page 规则为页面定义样式。我们使用 margin 简写为每个边距属性分配不同的值,并指定 size。我们没有设置 page-orientation。这让我们可以看到属性如何在 Web API 对象中映射。

css
@page {
  margin: 1cm 2px 3px 4px;
  /* page-orientation: upright; */
  size: A4;
}

JavaScript

代码首先获取索引为 1 的文档样式表,然后获取该样式表中定义的 cssRules。我们需要获取此样式表,因为示例嵌入在一个单独的帧中,该帧有自己的样式表(索引 0 是此页面的 CSS)。

js
const myRules = document.styleSheets[1].cssRules;

然后,我们遍历为实时示例定义的规则,并匹配任何类型为 CSSPageRule 的规则,因为这些规则对应于 @page 规则。对于匹配的对象,我们然后记录 style 及其所有值。

js
for (let i = 0; i < myRules.length; i++) {
  if (myRules[i] instanceof CSSPageRule) {
    log(`${myRules[i].style}`);
    log(`margin: ${myRules[i].style.margin}`);

    // Access properties using CamelCase properties
    log(`marginTop: ${myRules[i].style.marginTop}`);
    log(`marginRight: ${myRules[i].style.marginRight}`);
    log(`marginBottom: ${myRules[i].style.marginBottom}`);
    log(`marginLeft: ${myRules[i].style.marginLeft}`);
    log(`pageOrientation: ${myRules[i].style.pageOrientation}`);

    // Access properties using snake-case properties
    log(`margin-top: ${myRules[i].style["margin-top"]}`);
    log(`margin-right: ${myRules[i].style["margin-right"]}`);
    log(`margin-left: ${myRules[i].style["margin-left"]}`);
    log(`margin-bottom: ${myRules[i].style["margin-bottom"]}`);
    log(`page-orientation: ${myRules[i].style["page-orientation"]}`);

    log(`size: ${myRules[i].style.size}`);
    log("\n");
  }
}

结果

结果显示在下面。请注意,该对象应该是 CSSPageDescriptors 以匹配当前规范,但在某些浏览器中可能是 CSSStyleDeclaration。另请注意,属性在骆驼式和蛇形命名法中的对应值彼此匹配,并与 @page 声明匹配,并且 page-orientation 是空字符串 "",因为它未在 @page 中定义。

规范

规范
CSS 对象模型 (CSSOM)
# dom-csspagerule-style

浏览器兼容性

BCD 表格仅在启用了 JavaScript 的浏览器中加载。