发布时间:2025 年 1 月 15 日
重新设计的 attr()
函数
借助 CSS attr()
,您可以在 CSS 中使用 HTML 属性的值。到目前为止,attr()
仅在伪元素的 content
属性中有效,并且只能将值解析为 CSS <string>
。
经过重新设计的 attr()
函数(从 Chrome 133 开始提供)可解锁更多功能。现在,您可以将 attr()
与任何 CSS 属性(包括自定义属性)搭配使用,并且它可以将值解析为 <string>
以外的数据类型。
示例
在以下示例中,div
的 color
属性的值使用 data-color
属性中的值。此属性值会使用 attr()
和 type()
解析为 <color>
。回退值设置为 red
。
<div data-foo="blue">test</div>
div {
color: attr(data-foo type(<color>), red);
}
在下一个示例中,view-transition-name
属性由元素的 id
属性决定。该属性会解析为 <custom-ident>
,这是 view-transition-name
的必需类型。如果没有 attr()
,您必须为每张卡片声明一个 view-transition-name
,而现在您可以一次完成此操作。
<div class="cards">
<div class="card" id="card-1"></div>
<div class="card" id="card-2"></div>
<div class="card" id="card-3"></div>
<div class="card" id="card-4"></div>
</div>
.card {
view-transition-name: attr(id type(<custom-ident>), none); /* card-1, card-2, card-3, etc. */
view-transition-class: card;
}
您还可以将类型设置为与 CSS 尺寸单位或 %
字符匹配的任何标识符,以便将值解析为长度。在以下示例中,data-size
属性会解析为像素值。
<div data-size="10">test</div>
div {
font-size: attr(data-size px);
}
在没有任何类型的情况下使用 attr()
时,它会将该属性解析为 CSS 字符串,这与之前的行为相同。