*|* 这在 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)。需要明确的是,*| 前缀表示任何命名空间中的某些元素,包括:

默认命名空间中的元素(例如 Xhtml) 任何其他命名空间中的元素(例如 Firefox 中的 XUL) 不在命名空间中的元素

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 中是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

CSS中的符号波浪号(〜)是啥意思[重复]

!important 在 CSS 中是啥意思?

“|=”操作在C++中是啥意思?

/deep/ 和 ::shadow 在 CSS 选择器中是啥意思?

`.prose ol[type="A" s]`最后一个`s`在CSS中是啥意思?

这个尺寸在 css 中是啥意思 font: 14px/24px Arial, Helvetica, sans-serif