Publicado em: 15 de janeiro de 2025
A função attr() reprojetada
Com o CSS attr(), é possível usar o valor de um atributo HTML no CSS. Até agora, attr() só funcionava na propriedade content de pseudoelementos e só podia analisar valores em um <string> do CSS.
A função attr() redesenhada, disponível no Chrome 133, desbloqueia mais recursos. Agora é possível usar attr() com qualquer propriedade CSS, incluindo propriedades personalizadas, e analisar valores em tipos de dados diferentes de <string>.
Exemplos
No exemplo abaixo, o valor da propriedade color para div usa o valor do atributo data-color. Esse valor de atributo é analisado em um <color> usando attr() e type(). O valor padrão é definido como red.
<div data-foo="blue">test</div>
div {
color: attr(data-foo type(<color>), red);
}
No próximo exemplo, a propriedade view-transition-name é determinada pelo atributo id do elemento. O atributo é analisado em um <custom-ident>, que é o tipo obrigatório para view-transition-name. Sem attr(), você precisava declarar um view-transition-name para cada cartão, mas agora é possível fazer isso de uma só vez.
<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;
}
Também é possível analisar valores em um comprimento definindo o tipo como qualquer identificador que corresponda a uma unidade de dimensão CSS ou ao caractere %. No exemplo a seguir, o atributo data-size é analisado em um valor de pixel.
<div data-size="10">test</div>
div {
font-size: attr(data-size px);
}
Ao usar attr() sem nenhum tipo, o atributo é analisado como uma string CSS, o mesmo comportamento anterior.
Saiba mais
Saiba mais sobre attr() na especificação e no MDN.