* | *这是什么意思在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这样的东西是无效的。 看到这个答案的细节。