* | *这是什么意思在CSS?
我刚刚看到这个: *|*:link
与Firebug的*|*:link
。 这似乎是Firefox附加的一些默认样式,但是*|*
是什么意思?
这意味着“所有名称空间中的所有元素都是:link
。
更多关于通用select器和命名空间。
*|*
是一个命名空间限定的通用select器 。 第一个*
表示任何名称空间(包括默认名称空间和缺less名称空间),第二个*
表示任何元素types。
如前所述,select器*|*:link
表示任何名称空间中的任何元素,它是一个未访问的超链接( :link
)。 要清楚, *|
前缀是指任何名称空间中的某些元素,包括:
- 默认名称空间中的元素(例如XHTML)
- 任何其他命名空间中的元素(例如Firefox中的XUL)
- 不在名称空间中的元素
CSS有一个专用于名称空间声明的模块。
文档types决定了应将哪种元素指定为超链接:
-
在HTML和XHTML中,这总是一个带有
href
属性a
元素。 -
在XUL中,我相信这是一个带有
href
属性的label.text-link
元素。
请注意,CSS命名空间仅在使用CSS来对XML文档或定义命名空间的其他文档types进行types设置时才有用。 这包括具有自定义XML名称空间的XHTML页面。 在普通的HTML文档中,通常不需要在select器中使用名称空间前缀。
也就是说,浏览器在其用户代理样式表中声明了一个与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元素存在于默认名称空间中,因此仅用于匹配这些元素的select器不需要以名称空间作为前缀。 这就是为什么如上所述,在select器中不需要使用名称空间前缀的技术原因。
还要注意,如果你想要使用命名空间前缀来定位任何元素types,右边的*
必须在那里,所以像*|:link
这样的东西是无效的。 看到这个答案的细节。