Ce que sont les attributs HTML
Un attribut ajoute une information à un élément. Il se place dans la balise ouvrante et s'écrit avec un nom, un signe égal et une valeur entre guillemets : name="value". Un élément peut avoir autant d'attributs que nécessaire, séparés par des espaces.
href indique au lien où aller, src et alt décrivent l'image, type, placeholder et required configurent le champ. Chaque élément a son propre jeu d'attributs, et quelques-uns (les attributs globaux ci-dessous) fonctionnent sur tous les éléments.
Règles de syntaxe
<input type="text" name="city" value="Paris" disabled>
- Nom, signe égal, valeur entre guillemets. Les guillemets doubles sont la convention ; les simples marchent aussi (
title='Say "hi"'permet de mettre un guillemet double dans une valeur). - Les noms sont insensibles à la casse.
CLASSetclasssont le même attribut. Les valeurs, non :class="Box"etclass="box"sont deux classes différentes. - Les guillemets sont facultatifs sans espaces, mais mettez-en quand même.
class=big boxdonne à l'élément la classebiget un second attribut sans aucun sens appelébox. - L'ordre ne compte pas.
<img alt="" src="a.png">équivaut à<img src="a.png" alt="">. - Chaque nom une seule fois par élément. Si un attribut apparaît deux fois, le navigateur garde le premier et ignore le second sans rien dire.
Attributs booléens
Certains attributs sont activés ou désactivés. Pour eux, la présence signifie vrai, et la valeur est ignorée. disabled, checked, required, readonly, hidden, multiple, autofocus et open fonctionnent tous ainsi.
Le troisième bouton est désactivé alors que la valeur dit false, car le navigateur vérifie seulement si l'attribut est présent. Pour désactiver un attribut booléen, supprimez-le. En JavaScript, button.disabled = false fait exactement cela.
L'attribut class
class donne à un élément un ou plusieurs noms que le CSS et le JavaScript utilisent pour le trouver. Plusieurs éléments peuvent partager une classe, et un élément peut avoir plusieurs classes séparées par des espaces :
Chaque classe supplémentaire ajoute ses règles par-dessus. En CSS, une classe se sélectionne avec un point (.card) ; en JavaScript, element.classList.add('featured') et classList.remove les modifient. Les classes sont le moyen normal de mettre en forme : la plupart de votre CSS ciblera des classes.
L'attribut id
id donne à un élément un nom qui doit être unique sur la page. Utilisez-le quand vous avez besoin d'exactement un élément : la cible d'un lien, un <label for> ou document.getElementById.
Cliquer sur le label met le focus sur le champ, car for="email" pointe vers id="email". Le lien fait défiler jusqu'à #pricing car le fragment du href correspond à l'id.
class | id | |
|---|---|---|
| Combien d'éléments peuvent le partager | Autant que vous voulez | Un seul (unique) |
| Valeurs par élément | Plusieurs, séparées par des espaces | Une |
| Sélecteur CSS | .name | #name |
| Usage typique | Mettre en forme des groupes d'éléments | Cibles de liens, labels, un élément précis en JavaScript |
Un id ne peut pas contenir d'espaces. Commencez-le par une lettre pour qu'il reste simple à utiliser en CSS : #2col n'est pas un sélecteur CSS valide sans échappement.
Attributs globaux
Ces attributs fonctionnent sur n'importe quel élément :
| Attribut | Rôle |
|---|---|
id | Nom unique de l'élément |
class | Liste de noms de classes séparés par des espaces |
style | CSS en ligne, comme style="color: red" |
title | Texte d'infobulle affiché au survol |
lang | Langue du contenu, comme lang="fr" |
dir | Sens du texte : ltr, rtl ou auto |
hidden | Masque l'élément (booléen) |
tabindex | Rend un élément atteignable avec Tab, ou fixe son ordre |
contenteditable | Permet à l'utilisateur de modifier le texte de l'élément |
data-* | Vos propres données, lues en JavaScript |
L'attribut lang a sa propre page car il influence les lecteurs d'écran, la traduction et la recherche.
Les attributs data-*
Quand vous devez stocker votre propre valeur sur un élément, préfixez le nom par data-. N'importe quel nom convient après le préfixe, et le JavaScript lit les valeurs via element.dataset, les tirets étant convertis en camelCase :
data-product-id devient dataset.productId. Les valeurs reviennent toujours sous forme de chaînes, donc convertissez-les avec Number() avant de calculer. Le CSS peut aussi les sélectionner : [data-price="4.50"].
Erreurs fréquentes
- Écrire
classdeux fois.<div class="a" class="b">ne garde quea. Mettez les deux dans un seul attribut :class="a b". - Réutiliser un id. Deux éléments avec le même id cassent les liens d'ancre (
#links), les labels etgetElementById, qui ne renvoie que le premier. Utilisez une classe pour tout ce qui se répète. disabled="false"ouchecked="false". L'attribut est toujours présent, donc toujours actif. Supprimez-le plutôt.- Valeurs sans guillemets avec des espaces.
alt=My photodonne àaltla valeurMy. Mettez chaque valeur entre guillemets. - Inventer des attributs sans
data-.<div price="4">est du HTML invalide et peut entrer en conflit avec un futur attribut standard. Utilisezdata-price.
Questions fréquentes
Qu'est-ce qu'un attribut HTML ?
Un attribut est une information supplémentaire écrite dans une balise ouvrante sous la forme name="value". Il configure l'élément : href définit la destination d'un lien, src et alt décrivent une image, class et id permettent au CSS et au JavaScript de trouver l'élément.
Quelle est la différence entre class et id en HTML ?
Un id doit être unique sur la page et identifie un seul élément, pour les liens #fragment, <label for> et getElementById. Une class peut être partagée par plusieurs éléments, et un élément peut avoir plusieurs classes séparées par des espaces. Utilisez les classes pour le style.
Comment ajouter plusieurs classes à un élément HTML ?
Mettez-les dans un seul attribut class, séparées par des espaces : <div class="card featured dark">. Écrire class deux fois ne marche pas : le navigateur ne garde que le premier.
Les attributs HTML ont-ils besoin de guillemets ?
Les guillemets sont facultatifs quand la valeur n'a ni espace ni caractère spécial, mais mettre toujours des guillemets est l'habitude la plus sûre. class=big box donne à l'élément la classe big et un attribut distinct nommé box.
Pourquoi mon bouton reste désactivé avec disabled="false" ?
disabled est un attribut booléen : sa présence signifie vrai, quelle que soit la valeur. Pour activer l'élément, supprimez l'attribut, ou exécutez button.disabled = false en JavaScript, ce qui le supprime.
Puis-je inventer mes propres attributs HTML ?
Utilisez le préfixe data- : data-price="12" ou data-user-id="7" sont valides sur n'importe quel élément et lisibles en JavaScript via element.dataset. Les noms inventés sans ce préfixe sont du HTML invalide.