CSS 类型对象模型 API
CSS 类型对象模型 API 通过将 CSS 值作为类型化的 JavaScript 对象而不是字符串公开,简化了 CSS 属性操作。这不仅简化了 CSS 操作,而且与 HTMLElement.style
相比,减少了对性能的负面影响。
通常,CSS 值可以在 JavaScript 中以字符串形式读取和写入,这可能很慢且麻烦。CSS 类型对象模型 API 提供了与底层值交互的接口,通过使用专门的 JS 对象来表示它们,这些对象可以比字符串解析和连接更容易且更可靠地进行操作和理解。这对于作者来说更容易(例如,数值以实际的 JS 数字反映,并为其定义了单位感知的数学运算)。它通常也更快,因为值可以被直接操作,然后廉价地转换回底层值,而无需同时构建和解析 CSS 字符串。
CSS 类型对象模型既允许高效地操作分配给 CSS 属性的值,又能实现易于维护、更易理解和编写代码。
接口
CSSStyleValue
CSS 类型对象模型 API 的 CSSStyleValue
接口是通过类型化对象模型 API 访问的所有 CSS 值的基类。此类的实例可以在任何需要字符串的地方使用。
CSSStyleValue.parse()
-
CSSStyleValue 接口的 parse() 方法允许从 CSS 字符串构建 CSSNumericValue。它将特定 CSS 属性设置为指定的值,并将第一个值作为 CSSStyleValue 对象返回。
CSSStyleValue.parseAll()
-
CSSStyleValue 接口的 parseAll() 方法将特定 CSS 属性的所有出现设置为指定的值,并返回一个 CSSStyleValue 对象数组,每个对象包含一个提供的值。
StylePropertyMap
CSS 类型对象模型 API 的 StylePropertyMap
接口提供了 CSS 声明块的表示形式,它是 CSSStyleDeclaration 的替代方案。
StylePropertyMap.set()
-
StylePropertyMap 接口的方法,用于将具有给定属性的 CSS 声明更改为给定的值。
StylePropertyMap.append()
-
添加一个新的 CSS 声明到 StylePropertyMap 中,具有给定的属性和值。
StylePropertyMap.delete()
-
从 StylePropertyMap 中删除具有给定属性的 CSS 声明。
StylePropertyMap.clear()
-
删除 StylePropertyMap 中的所有声明。
CSSUnparsedValue
CSS 类型对象模型 API 的 CSSUnparsedValue
接口表示引用自定义属性的属性值。它由字符串片段和变量引用的列表组成。
CSSUnparsedValue()
构造函数-
创建一个新的 CSSUnparsedValue 对象,该对象表示引用自定义属性的属性值。
CSSUnparsedValue.entries()
-
返回给定对象自身可枚举属性 [键,值] 对的数组,顺序与 for...in 循环提供的顺序相同(区别在于 for-in 循环也枚举原型链中的属性)。
CSSUnparsedValue.forEach()
-
对 CSSUnparsedValue 的每个元素执行一次提供的函数。
CSSUnparsedValue.keys()
-
返回一个新的数组迭代器对象,其中包含数组中每个索引的键。
CSSKeywordValue
序列化
CSS 类型对象模型 API 的 CSSKeywordValue
接口创建一个对象来表示 CSS 关键字和其他标识符。
CSSKeywordValue()
构造函数-
构造函数创建一个新的
CSSKeywordValue()
对象,该对象表示 CSS 关键字和其他标识符。 CSSKeywordValue.value()
-
CSSKeywordValue 接口的属性,用于返回或设置 CSSKeywordValue 的值。
CSSStyleValue 接口
CSSStyleValue 是所有 CSS 值表达的基类。子类包括
CSSImageValue
对象-
表示采用图像的属性值的接口,例如
background-image
、list-style-image
或border-image-source
。 CSSKeywordValue
-
一个创建对象来表示 CSS 关键字和其他标识符的接口。当在需要字符串的地方使用时,它将返回 CSSKeyword.value 的值。
CSSMathValue
-
表示比单个值和单位更复杂的数值的子类树,包括
CSSMathInvert
- 表示用作calc(1 / <value>)
的 CSScalc()
值。CSSMathMax
- 表示 CSSmax()
函数。CSSMathMin
- 表示 CSSmin()
函数。CSSMathNegate
- 对传递给它的值取反。CSSMathProduct
- 表示通过在CSSNumericValue
上调用add()
、sub()
或toSum()
获得的结果。CSSMathSum
- 表示通过在CSSNumericValue
上调用add()
、sub()
或toSum()
获得的结果。
CSSNumericValue
-
表示所有数值可以执行的操作的接口,包括
CSSNumericValue.add
- 将提供的数字添加到CSSNumericValue
。CSSNumericValue.sub
- 从CSSNumericValue
中减去提供的数字。CSSNumericValue.mul
- 将提供的数字乘以CSSNumericValue
。CSSNumericValue.div
- 将提供的数字除以其他数字,如果为 0 则抛出错误。CSSNumericValue.min
- 返回传递的最小值CSSNumericValue.max
- 返回传递的最大值CSSNumericValue.equals
- 如果所有值都是完全相同的类型和值,并且顺序相同,则返回 true。否则,返回 falseCSSNumericValue.to
- 将value
转换为具有指定单位的另一个值。CSSNumericValue.toSum
CSSNumericValue.type
CSSNumericValue.parse
- 返回从 CSS 字符串解析的数字
CSSPositionValue
-
表示采用位置的属性的值,例如 object-position。
CSSTransformValue
-
表示
transform
列表值的列表的接口。它们“包含”一个或多个CSSTransformComponent
,它们表示单个transform
函数值。 CSSUnitValue
-
表示可以表示为单个单位或命名数字和百分比的数值的接口。
CSSUnparsedValue
-
表示引用 自定义属性 的属性值。它由字符串片段和变量引用的列表组成。
规范
规范 |
---|
CSS 类型对象模型级别 1 # stylevalue-objects |
CSS 类型对象模型级别 1 # the-stylepropertymap |
CSS 类型对象模型级别 1 # cssunparsedvalue |
CSS 类型对象模型级别 1 # keywordvalue-objects |
浏览器兼容性
api.CSSStyleValue
BCD 表格仅在启用了 JavaScript 的浏览器中加载。
api.StylePropertyMap
BCD 表格仅在启用了 JavaScript 的浏览器中加载。
api.CSSUnparsedValue
BCD 表格仅在启用了 JavaScript 的浏览器中加载。
api.CSSKeywordValue
BCD 表格仅在启用了 JavaScript 的浏览器中加载。