Я только что увидел это: *|*:link
с Firebug. По-видимому, это стиль по умолчанию, который добавляет Firefox, но что означает *|*
?
Что означает * | * это значение в CSS?
Ответ 1
Это означает "все элементы во всех пространствах имен, которые :link
".
Ответ 2
*|*
является универсальным селектором с поддержкой имен. Первый *
означает любое пространство имен (включая пространство имен по умолчанию и отсутствие пространства имен), а второй *
означает любой тип элемента.
Как уже упоминалось, селектор *|*: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
будет недействительным. Подробнее см. этот ответ.