data-*
Permet de stocker des données personnalisées sur un élément HTML. Le suffixe après data- est libre et accessible via JavaScript avec dataset.
Description
Les attributs data-* sont des attributs personnalisés qui permettent de stocker des informations arbitraires directement sur un élément HTML, sans conflit avec les attributs standards. Le nom est formé du préfixe data- suivi d’un identifiant libre (en minuscules, tirets autorisés). Ces données sont accessibles en JavaScript via la propriété dataset.
Syntaxe
<article data-id="42" data-categorie="technologie" data-auteur-id="7">
…
</article>
Exemples
Utilisation en JavaScript :
<button data-action="supprimer" data-cible="article-42" type="button">
Supprimer
</button>
<script>
document.querySelector('[data-action="supprimer"]')
.addEventListener('click', (e) => {
const { action, cible } = e.currentTarget.dataset;
console.log(action, cible); // "supprimer" "article-42"
});
</script>
Ciblage CSS via attributs data-* :
<span data-statut="actif">Utilisateur actif</span>
<style>
[data-statut="actif"] { color: green; }
[data-statut="inactif"] { color: gray; }
</style>
Notes
Conversion camelCase ↔ kebab-case : data-auteur-id est accessible en JS via element.dataset.auteurId (les tirets sont convertis en camelCase). L’inverse s’applique aussi pour l’écriture.
Pas pour les données sensibles : les attributs data-* sont visibles dans le HTML source. Ne jamais y stocker de données confidentielles (tokens, mots de passe, etc.).
Alternative aux classes utilitaires : préférer data-* pour les états comportementaux (data-ouvert, data-valide) et garder les classes pour le style.
Support navigateurs
Chrome7+ · Firefox6+ · Safari5.1+ · Edge12+