*|*
является универсальным селектором, квалифицированным для пространства имен .Первый *
означает любое пространство имен (включая пространство имен по умолчанию и отсутствие пространства имен), а второй *
означает любой тип элемента.
Как уже упоминалось, селектор *|*:link
представляет любой элемент влюбое пространство имен, которое является непосещенной гиперссылкой (:link
).Для ясности, префикс *|
означает определенные элементы в любом пространстве имен, включая:
- Элементы в пространстве имен по умолчанию (например, XHTML)
- Элементы в любом другом пространстве имен (например, XULв Firefox)
- Элементы, которые не находятся в пространстве имен
В CSS есть модуль, выделенный для объявлений пространства имен.
Тип документаопределяет, какие элементы должны быть обозначены как гиперссылки:
В HTML и XHTML это всегда элемент a
с атрибутом href
.
В XUL я считаю, что это элемент label.text-link
с атрибутом href
.
Обратите внимание, что пространства имен CSS полезны только при использовании CSS для стилизации XML-документов.или другие типы документов, которые определяют пространства имен аналогичным образом.Это включает в себя страницы XHTML с пользовательскими пространствами имен XML.В обычных документах HTML обычно нет необходимости использовать префиксы пространств имен в селекторах.
При этом браузеры объявляют пространство имен по умолчанию в своих таблицах стилей пользовательских агентов, которое в любом случае соответствует XHTML для HTML / XHTML, чтобы обеспечить взаимодействие с другимиЯзыки на основе XML.В случае Firefox это очевидно для работы с XHTML и XUL:
@namespace url(http://www.w3.org/1999/xhtml); /* set default namespace to HTML */
@namespace xul url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul);
Поскольку (X) HTML-элементы живут в пространстве имен по умолчанию, селекторы для сопоставления только с этими элементами не должен быть префиксом пространства имен.Это техническая причина, по которой, как я упоминал выше, нет необходимости использовать префиксы пространства имен в селекторах.
Обратите также внимание, что если вы хотите использовать любой тип элемента с префиксом пространства имен, то *
натам должна быть правая сторона, поэтому что-то вроде *|:link
будет недействительным.Подробнее см. в этом ответе .