Спецификация HTML допускает использование точек (.) В идентификаторе:
<img id="some.id" />
Однако использование правила селектора идентификатора CSS не будет соответствовать правильно:
#some.id { color: #f00; }
В спецификации CSS для селекторов идентификаторов этот случай не упоминается. Итак, я полагаю, он использует комбинацию имени тега и селектора класса ? Например, правило CSS a.className
будет применяться ко всем тегам привязки ( <a>
) с именем класса className
, например <a class="className"></a>
.
Возможно ли иметь правило внешнего файла CSS, которое ссылается на элемент HTML по его идентификатору, в котором есть точка?
Я не ожидаю этого, поскольку спецификация CSS указывает, что « идентификатор » CSS не включает точку как допустимый символ. Так это фундаментальное несоответствие между спецификациями HTML и CSS? Единственная альтернатива - использовать другой тип выбора CSS? Может ли кто-нибудь умнее меня подтвердить или опровергнуть это?
(Я бы удалил точку из атрибута HTML id, чтобы упростить ситуацию, но это идентификатор, сгенерированный системой, поэтому у меня нет возможности изменить его в этом случае.)
источник
#some.id
используется комбинация идентификатора и селектора класса.Ответы:
Классический. Сразу после того, как я покопался во всех спецификациях, написав вопрос, я прочитал еще немного и обнаружил, что есть escape-символ. Я никогда не нуждался в этом раньше, но спецификация CSS допускает экранирование обратной косой черты (\), как и в большинстве языков. Что ты знаешь?
Итак, в моем примере будет соответствовать следующее правило:
#some\.id { color: #f00; }
источник
#some\\.id
для экранирования специального символа. Первая обратная косая черта используется Stylus, оставляя оставшуюся обратную косую черту в скомпилированном CSS, что обеспечивает желаемый результат, описанный в этом ответе.Вы также можете использовать img [id = some.id]]
Подробнее здесь: http://www.w3.org/TR/selectors/#attribute-selectors
источник
.
, как\.
будто.