2016-08-04 3 views
1

Я продвигаю свое понимание CSS, изучая код Mozilla для Firefox.Почему указано пространство имен html?

В browser.css код считывает:

.ac-tags-text[selected] > html|span.ac-tag { 
    background-color: hsl(0, 0%, 100%); 
    color: hsl(210, 80%, 40%); 
} 

html|span.ac-emphasize-text-title, 
html|span.ac-emphasize-text-tag, 
html|span.ac-emphasize-text-url { 
    font-weight: 600; 
} 

Многократно, html|span используется вместо только span.

Какое другое пространство имен защищено, указав пространство имен html?

Если указание пространства имен необходимо, почему это не указано везде в коде CSS?

+0

Что именно вы подразумеваете под «повсюду»? – BoltClock

ответ

4

Какое другое пространство имен защищено путем указания пространства имен 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), от соответствия селектору, даже если оно имеет одно и то же имя класса.

Смежные вопросы