Vous pouvez vérifier directement à la grammaire CSS .
Fondamentalement 1 , un nom doit commencer par un trait de soulignement ( _
), un trait d'union ( -
) ou une lettre ( a
- z
), suivi d'un nombre quelconque de tirets, traits de soulignement, lettres ou chiffres. Il y a un hic: si le premier caractère est un trait d'union, le deuxième caractère doit 2 être une lettre ou un trait de soulignement, et le nom doit comporter au moins 2 caractères.
-?[_a-zA-Z]+[_a-zA-Z0-9-]*
En bref, la règle précédente se traduit par ce qui suit, extrait de la spécification W3C. :
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-z0-9] et ISO 10646 U + 00A1 et supérieurs, plus le trait d'union (-) et le trait de soulignement (_) ; ils ne peuvent pas commencer par un chiffre ou un tiret suivi d'un chiffre. Les identificateurs peuvent également contenir des caractères d'échappement et tout caractère ISO 10646 sous forme de code numérique (voir l'élément suivant). Par exemple, l'identifiant "B&W?" peut s'écrire "B \ & W \?" ou "B \ 26 W \ 3F".
Les identifiants commençant par un trait d'union ou un trait de soulignement sont généralement réservés aux extensions spécifiques au navigateur, comme dans -moz-opacity
.
1 Tout est rendu un peu plus compliqué par l'inclusion de caractères unicode échappés (que personne n'utilise vraiment).
2 Notez que, selon la grammaire que j'ai liée, une règle commençant par DEUX traits d'union, par exemple --indent1
, n'est pas valide. Cependant, je suis presque sûr d'avoir vu cela en pratique.