StylePropertyMapReadOnly - 提供了 CSS 声明块的只读表示形式

这是一个实验中的功能
此功能某些浏览器尚在开发中,请参考浏览器兼容性表格以得到在不同浏览器中适合使用的前缀。由于该功能对应的标准文档可能被重新修订,所以在未来版本的浏览器中该功能的语法和行为可能随之改变。

StylePropertyMapReadOnlyCSS 类型对象模型 API 的接口,提供了 CSS 声明块的只读表示形式,它是 CSSStyleDeclaration 的替代接口。使用 Element.computedStyleMap() 可以获取此接口的实例。

属性

StylePropertyMapReadOnly.size

返回一个无符号的长整数,其中包含 StylePropertyMapReadOnly 对象的大小。

方法

StylePropertyMapReadOnly.entries()

返回给定对象自己的可枚举属性 [key, value] 对的数组,其顺序与 for ... in 循环所提供的顺序相同(区别在于 for-in 循环也枚举原型链中的属性)。

StylePropertyMapReadOnly.forEach()

StylePropertyMapReadOnly 的每个元素执行一次提供的函数。

StylePropertyMapReadOnly.get()

返回指定属性的值。

StylePropertyMapReadOnly.getAll()

返回一个 CSSStyleValue 对象的数组,其中包含提供的属性的值。

StylePropertyMapReadOnly.has()

指示指定的属性是否在 StylePropertyMapReadOnly 对象中。

StylePropertyMapReadOnly.keys()

返回一个新的数组迭代器,该数组迭代器包含 StylePropertyMapReadOnly 中每个项目的键。

StylePropertyMapReadOnly.values()

返回一个新的数组迭代器,其中包含 StylePropertyMapReadOnly 对象中每个索引的值。

实例

首先有一个要观察的元素:

<p>
   这是一段文字。我们可以添加一些 CSS,也可以不添加。样式表将包含所有默认和继承的 CSS 属性值。
</p>
<dl id="output"></dl>

接着添加了带有自定义属性的 CSS,以更好地演示输出:

p { 
   --someVariable: 1.6em;
   --someOtherVariable: translateX(33vw);
   --anotherVariable: 42;
   line-height: var(--someVariable);
}

然后添加 JavaScript 来获取我们的段落,并使用 computedStyleMap(). 返回所有默认 CSS 属性值的定义列表。

// 获取元素
const myElement = document.querySelector('p');

// 获取我们用来填充的 <dl>
const stylesList = document.querySelector('#output');

// 使用 computedStyleMap() 检索所有计算出的样式
const stylePropertyMap = myElement.computedStyleMap();

// 遍历所有属性和值的映射,逐个添加到 <dt> 和 <dd>
for (const [prop, val] of stylePropertyMap) {
	// 属性
	const cssProperty = document.createElement('dt');
	cssProperty.appendChild(document.createTextNode(prop));
	stylesList.appendChild(cssProperty);

	// 值
	const cssValue = document.createElement('dd');
	cssValue.appendChild(document.createTextNode(val));
	stylesList.appendChild(cssValue);
}

规范

规范 状态 备注
CSS Typed OM Level 1
StylePropertyMapReadOnly 的定义
工作草案 初始定义。

桌面浏览器兼容性

特性ChromeEdgeFirefoxInternet ExplorerOperaSafari
基础支持6679 不支持 不支持53 不支持
entries6679 不支持 不支持53 不支持
forEach6679 不支持 不支持53 不支持
get6679 不支持 不支持53 不支持
getAll6679 不支持 不支持53 不支持
has6679 不支持 不支持53 不支持
keys6679 不支持 不支持53 不支持
size6679 不支持 不支持53 不支持
values6679 不支持 不支持53 不支持
@@iterator6679 不支持 不支持53 不支持

移动浏览器兼容性

特性AndroidChrome for AndroidEdge mobileFirefox for AndroidIE mobileOpera AndroidiOS Safari
基础支持6666 未知 不支持 未知47 不支持
entries6666 未知 不支持 未知47 不支持
forEach6666 未知 不支持 未知47 不支持
get6666 未知 不支持 未知47 不支持
getAll6666 未知 不支持 未知47 不支持
has6666 未知 不支持 未知47 不支持
keys6666 未知 不支持 未知47 不支持
size6666 未知 不支持 未知47 不支持
values6666 未知 不支持 未知47 不支持
@@iterator6666 未知 不支持 未知47 不支持