La especificación HTML permite puntos (.) En una identificación:
<img id="some.id" />
Sin embargo, el uso de una regla de selección de ID de CSS no coincidirá correctamente:
#some.id { color: #f00; }
La especificación CSS para selectores de ID no menciona este caso. Entonces, ¿asumo que está usando la combinación de un nombre de etiqueta y un selector de clase ? Por ejemplo, una regla CSS de a.className
se aplicaría a todas las etiquetas de anclaje ( <a>
) con un nombre de clase de className
, como <a class="className"></a>
.
¿Es posible tener una regla de archivo CSS externa que haga referencia a un elemento HTML por su ID que tiene un punto?
No espero que no, ya que CSS especifica que un " identificador " de CSS no incluye el punto como un carácter válido. Entonces, ¿se trata de una discrepancia fundamental entre las especificaciones HTML y CSS? ¿Mi única alternativa es usar un tipo diferente de selección de CSS? ¿Alguien más inteligente que yo puede confirmar o negar esto?
(Quitaría el punto del atributo ID de HTML para simplificar las cosas, pero es una identificación generada por el sistema, por lo que no tengo la capacidad de cambiarla en este caso).
fuente
#some.id
está usando la combinación de ID y selector de clase.Respuestas:
Clásico. Justo después de revisar todas las especificaciones para escribir la pregunta, la leí un poco más y descubrí que hay un carácter de escape. Nunca lo había necesitado antes, pero la especificación CSS permite el escape de barra invertida (\) como la mayoría de los lenguajes. ¿Que sabes?
Entonces, en mi ejemplo, la siguiente regla coincidiría:
#some\.id { color: #f00; }
fuente
#some\\.id
para escapar del carácter especial. Stylus consume la primera barra invertida, dejando la barra invertida restante en el CSS compilado, que logra el resultado deseado que se describe en esta respuesta.También puedes usar img [id = some.id]]
Más información aquí: http://www.w3.org/TR/selectors/#attribute-selectors
fuente
.
, como\.
si.