Welcher andere Namespace wird geschützt, indem der Namespace html
angegeben wird?
Wenn Sie fragen, was der Standard-Namespace in browser.css ist, ist es der XUL-Namespace. Sie können die Namespace-Deklarationen, in denen Sie sie normalerweise erwarten würde - in der Nähe der Spitze des Sheet:
@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");
Da der Standard-Namespace XUL ist, nicht HTML, alle Typselektoren HTML-Elemente passend zum html|
Namespacepräfix enthalten muss, Andernfalls versuchen sie stattdessen, Elemente im Standardnamespace abzugleichen.
Wenn der Namespace angegeben wird, warum wird er nicht überall im CSS-Code angegeben?
Wenn Sie sich fragen, warum es nicht für Dinge wie die [selected]
Attributselektor angegeben, dann ist es, weil das Attribut (zusammen mit einer Reihe anderer) Teil des Standard-Namespace, nicht der HTML-Namespace ist.
Wenn Sie fragen, warum es nicht für Dinge wie den .ac-tags-text
Klassenselektor angegeben ist, denken Sie daran, dass zusammengesetzte Selektoren ohne einen expliziten Typselektor oder universellen Selektor von einem impliziten *
begleitet werden. Erinnern Sie sich an einem Ihrer früheren Fragen,
What is the difference between * and *|* in CSS?
dass, wenn ein Standard-Namespace angegeben wird, *
Streichhölzer Elemente jeder Art nur im Standard-Namespace. Dies verhindert, dass Elemente außerhalb des Standardnamespace (wie HTML- und SVG-Elemente) mit dem Selektor übereinstimmen, selbst wenn sie denselben Klassennamen haben.
Was genau meinen Sie mit "überall"? – BoltClock