Puede consultar directamente en la gramática CSS .
Básicamente 1 , un nombre debe comenzar con un guión bajo ( _
), un guión ( -
) o una letra ( a
- z
), seguido de cualquier número de guiones, guiones bajos, letras o números. Hay una trampa: si el primer carácter es un guión, el segundo personaje debe 2 sea una letra o un guión bajo, y el nombre debe tener al menos 2 caracteres.
-?[_a-zA-Z]+[_a-zA-Z0-9-]*
En resumen, la regla anterior se traduce a la siguiente, extraída de la especificación W3C. :
En CSS, los identificadores (incluidos los nombres de elementos, clases e ID en los selectores) pueden contener solo los caracteres [a-z0-9] y los caracteres ISO 10646 U + 00A1 y superiores, más el guión (-) y el guión bajo (_) ; no pueden comenzar con un dígito o un guión seguido de un dígito. Los identificadores también pueden contener caracteres escapados y cualquier carácter ISO 10646 como código numérico (consulte el siguiente elemento). Por ejemplo, el identificador "B & W?" puede escribirse como "B \ & W \?" o "B \ 26 W \ 3F".
Los identificadores que comienzan con un guión o un guión bajo generalmente están reservados para extensiones específicas del navegador, como en -moz-opacity
.
1 Todo se vuelve un poco más complicado por la inclusión de caracteres Unicode escapados (que nadie usa realmente).
2 Tenga en cuenta que, según la gramática que vinculé, una regla que comienza con DOS guiones, por ejemplo --indent1
, no es válida. Sin embargo, estoy bastante seguro de haber visto esto en la práctica.