.some_class{}
和*.some_class{}
之间的区别是什么。
这是否意味着该类仅应用于另一个标记内的标记,或者根本没有差异?
答案 0 :(得分:4)
没有区别 - 请参阅here
通用选择器,写为“*”,匹配任何元素类型的名称。它匹配文档树中的任何单个元素。
如果通用选择器不是简单选择器的唯一组件,则可以省略“*”。例如:
*[lang=fr] and [lang=fr] are equivalent.
*.warning and .warning are equivalent.
*#myid and #myid are equivalent.
答案 1 :(得分:3)
它们之间没有任何区别。如果您未指定元素类型,例如div
或p
,那么您是否*
无关紧要。即使您将其删除,也暗示您希望匹配任何元素,只要它具有类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{
}
希望它有所帮助!