我刚看到这个:*|*:link
和Firebug。它似乎是Firefox附加的一些默认样式,但*|*
是什么意思?
答案 0 :(得分:31)
这意味着“所有名称空间中的所有元素都是:link
。”
答案 1 :(得分:14)
*|*
是namespace-qualified universal selector。第一个*
表示任何名称空间(包括默认名称空间和缺少名称空间),第二个*
表示任何元素类型。
如上所述,选择器*|*:link
表示任何名称空间中任何未访问的超链接(:link
)的元素。需要说明的是,*|
前缀表示任何名称空间中的某些元素,包括:
CSS has a module dedicated to namespace declarations.
文档类型确定应将哪种元素指定为超链接:
在HTML和XHTML中,这始终是具有a
属性的href
元素。
在XUL中,我认为这是一个label.text-link
元素,具有href
属性。
请注意,CSS名称空间仅在使用CSS设置XML文档样式或类似定义名称空间的其他文档类型时才有用。这包括具有自定义XML命名空间的XHTML页面。在常规HTML文档中,通常不需要在选择器中使用名称空间前缀。
也就是说,浏览器在其用户代理样式表中声明了一个默认命名空间,无论如何都与HTML / XHTML的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元素存在于默认命名空间中,因此用于匹配这些元素的选择器不需要以名称空间为前缀。正如我在上面提到的那样,这就是为什么不需要在选择器中使用名称空间前缀的技术原因。
另请注意,如果要使用命名空间前缀定位任何元素类型,则右侧的*
必须在那里,因此*|:link
之类的内容将无效。有关详细信息,请参阅this answer。