A especificação HTML permite pontos (.) Em um id:
<img id="some.id" />
No entanto, o uso de uma regra de seletor de código CSS não corresponderá corretamente:
#some.id { color: #f00; }
A especificação CSS para seletores de ID não menciona esse caso. Portanto, presumo que esteja usando a combinação de um nome de tag e um seletor de classe . Por exemplo, uma regra CSS de a.className
se aplicaria a todas as tags âncora ( <a>
) com um nome de classe de className
, como <a class="className"></a>
.
É possível ter uma regra de arquivo CSS externo que faz referência a um elemento HTML por seu id que contém um ponto?
Espero que não, já que a especificação CSS especifica que um " identificador " CSS não inclui o período como um caractere válido. Então, essa é uma incompatibilidade fundamental entre as especificações HTML e CSS? Minha única alternativa é usar um tipo diferente de seleção CSS? Alguém mais esperto do que eu pode confirmar ou negar isso?
(Eu removeria o ponto do atributo de id HTML para simplificar as coisas, mas é um id gerado pelo sistema, então não tenho a capacidade de alterá-lo neste caso.)
fonte
#some.id
está usando a combinação de ID e seletor de classe.Respostas:
Clássico. Depois de vasculhar todas as especificações ao escrever a pergunta, eu li um pouco mais e descobri que há um caractere de escape. Nunca precisei disso antes, mas as especificações CSS permitem o escape de barra invertida (\) como a maioria das linguagens. O que você sabe?
Portanto, no meu exemplo, a seguinte regra corresponderia:
#some\.id { color: #f00; }
fonte
#some\\.id
para escapar do caractere especial. A primeira barra invertida é consumida pela Stylus, deixando a barra invertida restante no CSS compilado, que atinge o resultado desejado descrito nesta resposta.Você também pode usar img [id = some.id]]
Mais informações aqui: http://www.w3.org/TR/selectors/#attribute-selectors
fonte
.
, como\.
se.