Какое другое пространство имен защищено путем указания пространства имен html
?
Если вы спрашиваете, что такое пространство имен по умолчанию в browser.css, это пространство имен XUL. Вы можете найти объявление пространства имен, где вы обычно ожидаете их - в верхней части таблицы стилей:
@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
@namespace html url("http://www.w3.org/1999/xhtml");
@namespace svg url("http://www.w3.org/2000/svg");
Поскольку пространство имен по умолчанию является XUL, а не HTML, все селекторы типа, соответствующих HTML-элементы должны содержать префикс html|
пространства имен, в противном случае они попытаются сопоставить элементы в пространстве имен по умолчанию.
Если требуется указать пространство имен, почему это не указано везде в коде CSS?
Если вы спрашиваете, почему это не указано для вещей, как селектор [selected]
атрибута, это потому, что атрибут (наряду с рядом других) является частью пространства имен по умолчанию, не HTML-имена.
Если вы спрашиваете, почему это не указано для таких вещей, как селектор классов .ac-tags-text
, помните, что составные селектора без явного выбора типа или универсального селектора сопровождаются неявным *
. Напомним, в одном из предыдущих вопросов,
What is the difference between * and *|* in CSS?
, что при указании имен по умолчанию, *
Матчей элементы любого типа только в пространстве имен по умолчанию. Это предотвращает совпадение элементов, находящихся за пределами пространства имен по умолчанию (например, элементов HTML и SVG), от соответствия селектору, даже если оно имеет одно и то же имя класса.
Что именно вы подразумеваете под «повсюду»? – BoltClock