@namespace
是
at-rule
that defines
XML namespaces
to be used in a
CSS
style sheet
.
/* Default namespace */ @namespace url(XML-namespace-URL); @namespace "XML-namespace-URL"; /* Prefixed namespace */ @namespace prefix url(XML-namespace-URL); @namespace prefix "XML-namespace-URL";
The defined namespaces can be used to restrict the
universal
,
type
,和
attribute
selectors
to only select elements within that namespace. The
@namespace
rule is generally only useful when dealing with documents containing multiple namespaces—such as HTML5 with inline SVG or MathML, or XML that mixes multiple vocabularies.
Any
@namespace
rules must follow all
@charset
and
@import
rules, and precede all other at-rules and
style declarations
in a style sheet.
@namespace
can be used to define the
default namespace
for the style sheet. When a default namespace is defined, all universal and type selectors (but not attribute selectors, see note below) apply only to elements in that namespace.
@namespace
rule can also be used to define a
namespace prefix
. When a universal, type, or attribute selector is prefixed with a namespace prefix, then that selector only matches if the namespace
and
name of the element or attribute matches.
在
HTML5
, known
foreign elements
will automatically be assigned namespaces. This means that HTML elements will act as though they are in the XHTML namespace (
http://www.w3.org/1999/xhtml
), even if there is no
xmlns
attribute anywhere in the document, and the
<svg>
and
<math>
elements will be assigned their proper namespaces (
http://www.w3.org/2000/svg
and
http://www.w3.org/1998/Math/MathML
).
注意:
In XML, unless a prefix is defined directly on an attribute (
e.g.
,
xlink:href
), that attribute has no namespace. In other words, attributes do not inherit the namespace of the element they're on. To match this behaviour, the default namespace in CSS does not apply to attribute selectors.
@namespace <namespace-prefix>? [ <string> | <url> ];where
<namespace-prefix> = <ident>
@namespace url(http://www.w3.org/1999/xhtml);
@namespace svg url(http://www.w3.org/2000/svg);
/* This matches all XHTML <a> elements, as XHTML is the default unprefixed namespace */
a {}
/* This matches all SVG <a> elements */
svg|a {}
/* This matches both XHTML and SVG <a> elements */
*|a {}
| 规范 | 状态 | 注释 |
|---|---|---|
|
CSS Namespaces Module
The definition of '@namespace' in that specification. |
推荐 | 初始定义 |
| Desktop | Mobile | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
@namespace
|
Chrome 完整支持 1 | Edge 完整支持 12 | Firefox 完整支持 1 | IE 完整支持 9 | Opera 完整支持 8 | Safari 完整支持 1 | WebView Android 完整支持 37 | Chrome Android 完整支持 18 | Firefox Android 完整支持 4 | Opera Android 完整支持 14 | Safari iOS 完整支持 1 | Samsung Internet Android 完整支持 1.0 |
完整支持
@namespace