Mise à niveau de la fonction CSS attr()

Publié le 15 janvier 2025

Fonction attr() repensée

Avec le CSS attr(), vous pouvez utiliser la valeur d'un attribut HTML dans votre CSS. Jusqu'à présent, attr() ne fonctionnait que dans la propriété content des pseudo-éléments et ne pouvait analyser que des valeurs dans un <string> CSS.

La fonction attr() repensée, disponible à partir de Chrome 133, offre plus de fonctionnalités. Vous pouvez désormais utiliser attr() avec n'importe quelle propriété CSS, y compris les propriétés personnalisées. Il peut analyser les valeurs en types de données autres que <string>.

Exemples

Dans l'exemple suivant, la valeur de la propriété color pour div utilise la valeur de l'attribut data-color. La valeur de cet attribut est analysée dans un <color> à l'aide de attr() et type(). La valeur de remplacement est définie sur red.

<div data-foo="blue">test</div>
div {
  color: attr(data-foo type(<color>), red);
}

Dans l'exemple suivant, la propriété view-transition-name est déterminée par l'attribut id de l'élément. L'attribut est analysé en <custom-ident>, qui est le type requis pour view-transition-name. Sans attr(), vous deviez déclarer un view-transition-name pour chaque fiche, alors que vous pouvez désormais le faire en une seule fois.

<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;
}

Vous pouvez également analyser des valeurs en longueur en définissant le type sur n'importe quel identifiant correspondant à une unité de dimension CSS ou au caractère %. Dans l'exemple suivant, l'attribut data-size est analysé en valeur de pixel.

<div data-size="10">test</div>
div {
  font-size: attr(data-size px);
}

Lorsque vous utilisez attr() sans type, l'attribut est analysé en tant que chaîne CSS, ce qui correspond au comportement précédent.

En savoir plus

Pour en savoir plus sur attr(), consultez la spécification et MDN.