HTML5: valores permitidos para atributos de ID e classe
No HTML5, as únicas restrições ao valor de um ID são:
- deve ser exclusivo no documento
- não deve conter caracteres de espaço
- deve conter pelo menos um caractere
Regras semelhantes se aplicam às classes (exceto a exclusividade, é claro).
Portanto, o valor pode ter todos os dígitos, apenas um dígito, apenas caracteres de pontuação, incluir caracteres especiais, qualquer que seja. Apenas sem espaço em branco. Isso é muito diferente do HTML4.
No HTML 4, os valores de ID devem começar com uma letra, que pode ser seguida apenas por letras, dígitos, hífens, sublinhados, dois pontos e pontos.
No HTML5, estes são válidos:
<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>
Lembre-se de que o uso de números, pontuação ou caracteres especiais no valor de um ID pode causar problemas em outros contextos (por exemplo, CSS, JavaScript, regex).
Por exemplo, o seguinte ID é válido em HTML5:
<div id="9lions"> ... </div>
No entanto, é inválido no CSS:
Na especificação CSS2.1:
4.1.3 Caracteres e caso
No CSS, os identificadores (incluindo nomes de elementos, classes e IDs nos seletores) podem conter apenas os caracteres [a-zA-Z0-9] e os caracteres ISO 10646 U + 00A0 e superior, além do hífen (-) e o sublinhado ( _); eles não podem começar com um dígito, dois hífens ou um hífen seguido por um dígito .
Na maioria dos casos, você pode escapar dos caracteres em contextos em que eles têm restrições ou significado especial.
Referências W3C
HTML5
3.2.5.1 O id
atributo
O id
atributo especifica o identificador exclusivo (ID) do seu elemento.
O valor deve ser exclusivo entre todos os IDs na subárvore inicial do elemento e deve conter pelo menos um caractere. O valor não deve conter caracteres de espaço.
Nota: Não há outras restrições sobre a forma que um ID pode assumir; em particular, os IDs podem consistir apenas em dígitos, começar com um dígito, começar com um sublinhado, consistir apenas em pontuação etc.
3.2.5.7 O class
atributo
O atributo, se especificado, deve ter um valor que é um conjunto de tokens separados por espaço, representando as várias classes às quais o elemento pertence.
As classes que um elemento HTML atribuiu a ele consistem em todas as classes retornadas quando o valor do atributo de classe é dividido em espaços. (Duplicatas são ignoradas.)
Não há restrições adicionais nos tokens que os autores podem usar no atributo class, mas os autores são incentivados a usar valores que descrevem a natureza do conteúdo, em vez de valores que descrevem a apresentação desejada do conteúdo.