HTML5: valeurs autorisées pour les attributs d'ID et de classe
Depuis HTML5, les seules restrictions sur la valeur d'un identifiant sont:
- doit être unique dans le document
- ne doit contenir aucun espace
- doit contenir au moins un caractère
Des règles similaires s'appliquent aux classes (sauf pour l'unicité, bien sûr).
Ainsi, la valeur peut être tous les chiffres, un seul chiffre, juste des caractères de ponctuation, inclure des caractères spéciaux, peu importe. Pas d'espace. C'est très différent de HTML4.
En HTML 4, les valeurs d'ID doivent commencer par une lettre, qui peut ensuite être suivie uniquement par des lettres, des chiffres, des tirets, des traits de soulignement, des deux-points et des points.
En HTML5, ceux-ci sont valides:
<div id="999"> ... </div>
<div id="#%LV-||"> ... </div>
<div id="____V"> ... </div>
<div id="⌘⌥"> ... </div>
<div id="♥"> ... </div>
<div id="{}"> ... </div>
<div id="©"> ... </div>
<div id="♤₩¤☆€~¥"> ... </div>
Gardez à l'esprit que l'utilisation de chiffres, de ponctuation ou de caractères spéciaux dans la valeur d'un ID peut causer des problèmes dans d'autres contextes (par exemple, CSS, JavaScript, regex).
Par exemple, l'ID suivant est valide en HTML5:
<div id="9lions"> ... </div>
Cependant, il n'est pas valide en CSS:
De la spécification CSS2.1:
4.1.3 Caractères et cas
En CSS, les identificateurs (y compris les noms d'élément, les classes et les ID dans les sélecteurs) ne peuvent contenir que les caractères [a-zA-Z0-9] et les caractères ISO 10646 U + 00A0 et supérieurs, plus le tiret (-) et le trait de soulignement ( _); ils ne peuvent pas commencer par un chiffre, deux tirets ou un tiret suivi d'un chiffre .
Dans la plupart des cas, vous pourrez peut-être échapper des caractères dans des contextes où ils ont des restrictions ou une signification particulière.
Références W3C
HTML5
3.2.5.1 L' id
attribut
L' id
attribut spécifie l'identifiant unique (ID) de son élément.
La valeur doit être unique parmi tous les ID de la sous-arborescence d'origine de l'élément et doit contenir au moins un caractère. La valeur ne doit contenir aucun caractère espace.
Remarque: Il n'y a aucune autre restriction sur la forme que peut prendre un identifiant; en particulier, les identifiants peuvent être constitués uniquement de chiffres, commencer par un chiffre, commencer par un trait de soulignement, consister uniquement en ponctuation, etc.
3.2.5.7 L' class
attribut
L'attribut, s'il est spécifié, doit avoir une valeur qui est un ensemble de jetons séparés par des espaces représentant les différentes classes auxquelles l'élément appartient.
Les classes qu'un élément HTML lui a affectées se composent de toutes les classes renvoyées lorsque la valeur de l'attribut class est divisée en espaces. (Les doublons sont ignorés.)
Il n'y a pas de restrictions supplémentaires sur les jetons que les auteurs peuvent utiliser dans l'attribut de classe, mais les auteurs sont encouragés à utiliser des valeurs qui décrivent la nature du contenu, plutôt que des valeurs qui décrivent la présentation souhaitée du contenu.