Uff*_*ffo 47 css firefox css-selectors css3
我刚看到这个:*|*:link
用Firebug.这似乎是Firefox附加的一些默认样式,但是什么*|*
意思呢?
Bol*_*ock 14
*|*
是一个命名空间限定的通用选择器.第一个*
意味着任何命名空间(包括默认命名空间和缺少命名空间),第二个*
意味着任何元素类型.
如上所述,选择器*|*:link
表示任何名称空间中任何未访问的超链接(:link
)的元素.需要说明的是,*|
前缀表示任何命名空间中的某些元素,包括:
文档类型确定应将哪种元素指定为超链接:
在HTML和XHTML中,这始终是a
具有href
属性的元素.
在XUL中,我相信这是一个label.text-link
具有href
属性的元素.
请注意,CSS名称空间仅在使用CSS设置XML文档样式或类似定义名称空间的其他文档类型时才有用.这包括具有自定义XML命名空间的XHTML页面.在常规HTML文档中,通常不需要在选择器中使用名称空间前缀.
也就是说,浏览器在其用户代理样式表中声明了一个默认命名空间,无论如何都与XHTML for HTML/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);
Run Code Online (Sandbox Code Playgroud)
由于(X)HTML元素存在于默认命名空间中,因此仅用于匹配这些元素的选择器不需要以命名空间为前缀.这就是技术原因,正如我在上面提到的那样,没有必要在选择器中使用名称空间前缀.
另请注意,如果要使用名称空间前缀来定位任何元素类型,*
则右侧必须存在,因此类似的内容*|:link
将无效.有关详情,请参阅此答案.