CSS - 课前的星号是什么意思?

时间:2013-11-29 09:15:35

标签: css css-selectors

.some_class{}*.some_class{}之间的区别是什么。

这是否意味着该类仅应用于另一个标记内的标记,或者根本没有差异?

3 个答案:

答案 0 :(得分:4)

没有区别 - 请参阅here

  

通用选择器,写为“*”,匹配任何元素类型的名称。它匹配文档树中的任何单个元素。

     

如果通用选择器不是简单选择器的唯一组件,则可以省略“*”。例如:

*[lang=fr] and [lang=fr] are equivalent.
*.warning and .warning are equivalent.
*#myid and #myid are equivalent.

答案 1 :(得分:3)

它们之间没有任何区别。如果您未指定元素类型,例如divp,那么您是否*无关紧要。即使您将其删除,也暗示您希望匹配任何元素,只要它具有类some_class即可。来自spec

  

如果由*表示的通用选择器(即没有名称空间前缀)不是简单选择器序列序列的唯一组件,或者后面紧跟伪元素,那么*可以省略并且通用选择器的存在默示。

     
    

示例:

         
        
  • *[hreflang|=en][hreflang|=en]相同,
  •     
  • *.warning.warning相同,
  •     
  • *#myid#myid相同。
  •     
  

在元素位于其他元素中时所描述的内容仅适用于*通过空格与类分隔的情况,例如* .some_class。只有当它位于另一个元素内时,它才会匹配具有类some_class的元素(基本上这意味着它永远不会匹配根元素)。

根据上面关于隐含*的解释,这会使带有空格的选择器也等同于* *.some_class。在这里,您可以看到两个通用选择器正在使用中,由组合子分隔。第二个恰好是可选的,因为它已经被类选择器限定(第一个不是可选的,因为它本身就存在)。

答案 2 :(得分:0)

假设在类之前转到id(#id.class):

将astherisc与nother之间没有任何区别,因为asterisc意味着CSS将应用于具有此类的任何id,这与将该类放入其中的方式相同:

// This style will be applied to anybody that has the attribute class="my_class"
.my_class{
}

// This class will be applied to anybody to any id that also has the attribute class="my_class"
*.my_class{
}

希望它有所帮助!