首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

命名空间 | @namespace

@namespace是定义要在CSS 样式表中使用的XML名称空间的规则。已定义的名称空间可用于限制通用类型和属性选择器,以仅选择该名称空间内的元素。该规则通常只在处理包含多个名称空间的文档时才有用,例如内联SVG或MathML的HTML5或混合多个词汇表的XML。 @namespace

代码语言:javascript
复制
@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 {}

任何@namespace规则都必须遵循所有@charset和@import规则,并且在样式表中的所有其他规则和样式声明之前。

@namespace可以用来定义样式表的默认名称空间。定义默认名称空间时,所有通用类型选择器(而不是属性选择器,请参阅下面的注释)仅适用于该名称空间中的元素。

@namespace规则也可以用来定义一个名称空间前缀。如果通用类型或属性选择器的前缀是名称空间前缀,那么只有当元素或属性的名称空间名称匹配时,该选择器才会匹配。

HTML5中,已知的外部元素将被自动分配命名空间。这意味着http://www.w3.org/1999/xhtml即使xmlns文档中的任何位置没有属性,并且<svg><math>元素将被分配了适当的命名空间(http://www.w3.org/2000/svghttp://www.w3.org/1998/Math/MathML),HTML元素也会像在XHTML命名空间()中那样工作。

注意:在XML中,除非直接在属性(例如xlink:href)上定义前缀,否则该属性没有名称空间。换句话说,属性不会继承它所在元素的名称空间。要匹配此行为,CSS中的默认名称空间不适用于属性选择器。

语法

代码语言:javascript
复制
/* Default namespace */
@namespace url(XML-namespace-URL);
@namespace "XML-namespace-URL";

/* Prefixed namespace */
@namespace prefix url(XML-namespace-URL);
@namespace prefix "XML-namespace-URL";

形式语法

代码语言:javascript
复制
@namespace <namespace-prefix>? [ <string> | <url> ];where 
<namespace-prefix> = <ident>

规范

Specification

Status

Comment

CSS Namespaces ModuleThe definition of '@namespace' in that specification.

Recommendation

Initial definition

浏览器兼容性

Feature

Chrome

Edge

Firefox (Gecko)

Internet Explorer

Opera

Safari

Basic support

1.0

(Yes)

1.0 (1.7 or earlier)

9.0

8.0

1.0

Namespace selector (|)

1.0

(Yes)

1.0 (1.7 or earlier)

9.0

8.0

3.0

Feature

Android

Chrome for Android

Edge

Firefox Mobile (Gecko)

IE Mobile

Opera Mobile

Safari Mobile

Basic support

?

?

(Yes)

?

?

?

?

扫码关注腾讯云开发者

领取腾讯云代金券