Что означает * | * в CSS? - PullRequest
       12

Что означает * | * в CSS?

47 голосов
/ 31 августа 2010

Я только что видел это: *|*:link с Firebug. Кажется, это стиль по умолчанию, который добавляет Firefox, но что означает *|*?

Ответы [ 2 ]

31 голосов
/ 31 августа 2010

Это означает "все элементы во всех пространствах имен, которые :link."

Подробнее об универсальных селекторах и пространствах имен.

14 голосов
/ 19 октября 2012

*|* является универсальным селектором, квалифицированным для пространства имен .Первый * означает любое пространство имен (включая пространство имен по умолчанию и отсутствие пространства имен), а второй * означает любой тип элемента.

Как уже упоминалось, селектор *|*: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 будет недействительным.Подробнее см. в этом ответе .

...