*|* 这在 CSS 中是啥意思?
Posted
技术标签:
【中文标题】*|* 这在 CSS 中是啥意思?【英文标题】:What does *|* this mean in CSS?*|* 这在 CSS 中是什么意思? 【发布时间】:2011-04-06 05:56:25 【问题描述】:我刚刚看到这个:*|*:link
与 Firebug。这似乎是 Firefox 附加的一些默认样式,但 *|*
是什么意思?
【问题讨论】:
CSS 命名空间。除了ajaxian.com/archives/…,我不能再有知识了 【参考方案1】:意思是“所有命名空间中所有:link
的元素。”
More on universal selectors and namespaces.
【讨论】:
【参考方案2】:*|*
是一个namespace-qualified universal selector。第一个*
表示任何命名空间(包括默认命名空间和缺少命名空间),第二个*
表示任何元素类型。
如前所述,选择器 *|*:link
表示任何命名空间中的任何元素,该元素是未访问的超链接 (:link
)。需要明确的是,*|
前缀表示任何命名空间中的某些元素,包括:
CSS has a module dedicated to namespace declarations.
文档类型决定了哪些元素应该被指定为超链接:
在 HTML 和 XHTML 中,这始终是带有 href
属性的 a
元素。
在 XUL 中,我相信这是一个带有 href
属性的 label.text-link
元素。
请注意,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。
【讨论】:
以上是关于*|* 这在 CSS 中是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章
/deep/ 和 ::shadow 在 CSS 选择器中是啥意思?
`.prose ol[type="A" s]`最后一个`s`在CSS中是啥意思?
这个尺寸在 css 中是啥意思 font: 14px/24px Arial, Helvetica, sans-serif