*和* | *在CSS中有什么区别?

在CSS中, *将匹配任何元素。

通常,使用*|*而不是*来匹配所有元素。 这通常用于testing目的。

**|*在CSS中有什么区别?

根据W3Cselect规范 :

通用select器允许一个可选的命名空间组件。 它使用如下:

ns|*
ns中的所有元素

*|*
所有元素

|*
所有没有命名空间的元素

*
如果没有指定默认命名空间,则这等同于* | *。 否则,它相当于ns | *,其中ns是默认名称空间。

所以,没有**|*并不总是相同的。 如果提供了默认名称空间,则*只select属于该名称空间的元素。


您可以使用以下两个片段直观地查看差异。 首先,定义了一个默认的名称空间,所以*select器仅将米色背景应用于该namsepace的一部分的元素,而*|*将边界应用于所有元素。

 @namespace "http://www.w3.org/2000/svg"; * { background: beige; } *|* { border: 1px solid; } 
 <a href="#">This is some link</a> <svg xmlns="http://www.w3.org/2000/svg"> <a xlink:href="#"> <text x="20" y="20">This is some link</text> </a> </svg> 

*|*表示“任何名称空间中的所有元素”的select器。 根据W3C ,select器分为:

NS |企业

其中ns是命名空间 ,E是元素。 默认情况下,不声明名称空间。 因此,除非明确声明名称空间,否则*|**将select相同的元素。

在CSS中, *将匹配任何元素。

| 用于匹配select的特定元素 。 两者都是用于我们testing目的的select器