sobre - selectores css
¿Existe alguna solución para que las clases de CSS con nombres que comiencen con números sean válidos? (2)
Esta pregunta ya tiene una respuesta aquí:
¿Se hace referencia en alguna parte que las clases de CSS con nombres que comienzan con números no funcionan? Por ejemplo, encontré que una clase con antecedentes como:
.000000-8 {background:url(../../images/common/000000-0.8.png);}
.8FFFFFF {background:url(../../images/common/FFFFFF-0.8.png);}
no funciona en la mayoría de los navegadores que tengo y la gramática CSS muestra eso, pero mi pregunta es ¿hay alguna solución para que las clases de CSS con nombres que comiencen con números sean válidos? .
No hay clases de CSS. La pregunta se divide lógicamente en dos preguntas: ¿puede comenzar un nombre de clase con un dígito en HTML, y (asumiendo que la respuesta es “sí”, como está) si lo hace, cómo usa el selector de clase correspondiente en CSS?
Varias especificaciones HTML imponen varias restricciones en los nombres de clase, pero en la práctica del navegador, y de acuerdo con HTML5, no hay limitaciones, excepto que un nombre de clase no puede contener caracteres de espacio en blanco. Entonces la class=000000-8
es válida.
Por las reglas de sintaxis de CSS, un identificador de CSS no puede estar con un dígito sin escapar . Por lo tanto, un selector como .000000-8
no es válido. Pero el dígito puede escaparse, mediante las reglas de escape de CSS : el selector
./30 00000-8
o equivalente,
./00003000000-8
es válido y coincide con un elemento con class=000000-8
.
No hace falta decir que es mejor evitar los nombres de clase que comienzan con un dígito, pero si tiene que trabajar con ellos (por ejemplo, debido a que algunos documentos HTML los tienen y no puede cambiar el marcado), esta es la manera.
Sí, está documentado en la especificación CSS :
En CSS, los identificadores (incluidos los nombres de elementos, las clases y los ID en los selectores) pueden contener solo los caracteres
[a-zA-Z0-9]
y los caracteres ISO 10646U+00A0
y superior, más el guión (-
) y el guión bajo (_
); no pueden comenzar con un dígito, dos guiones o un guión seguido de un dígito . Los identificadores también pueden contener caracteres escapados y cualquier carácter ISO 10646 como un código numérico (ver el siguiente elemento). Por ejemplo, el identificador "B&W?
" Puede escribirse como "B/&W/?
" O "B/26 W/3F
".