【问题标题】:CSS - What does asterisk before class mean?CSS - 课前的星号是什么意思?
【发布时间】:2013-11-29 17:37:03
【问题描述】:

.some_class{}*.some_class{} 有什么区别。

这是否意味着该类仅应用于另一个标签内的标签或根本没有区别?

【问题讨论】:

  • 这太不可思议了。首先你有问题问“在属性之前 * 是什么意思”,人们回答“它意味着一个通用选择器”,现在你有问题问“在类选择器之前 * 是什么意思”,人们说这是一个属性黑客即。

标签: css css-selectors


【解决方案1】:

没有区别-见here

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

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

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

【讨论】:

  • 什么?这不是属性。
  • @BoltClock 是独角兽 我同意在引用的文章中对术语的误导性使用,让我用更好的替换
  • 引用的文章没有使用误导性术语 - 与属性名称一起使用时语法确实是错误的。但是您似乎误解了这个问题-它首先不涉及财产。它涉及一个选择器。
  • @BoltClock 是独角兽 - 喝了咖啡,醒了 + 修改了答案。感谢您掌控一切,让我们任性的人受到控制:S
  • 我承认我很吃惊。你不是唯一一个误读了这个问题的人!
【解决方案2】:

它们之间根本没有区别。如果您没有指定元素类型,例如divp,那么您是否有* 并不重要。即使您忽略它,也暗示您想要匹配 any 元素,只要它具有类 some_class。来自spec

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

例子:

  • *[hreflang|=en][hreflang|=en] 是等价的,
  • *.warning.warning 是等价的,
  • *#myid#myid 是等价的。

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

采用上述关于* 的解释,这将使带有空格的选择器也等同于* *.some_class。在这里您可以看到 两个 通用选择器正在使用中,由组合符分隔。第二个恰好是可选的,因为它已经被类选择器限定了(第一个不是可选的,因为它自己存在)。

【讨论】:

  • 有趣的是,chrome 在这两种情况下有所不同。我有一个生成的带有生成 css 的 html 文件,其中所有类都带有星号。但是当我删除星号时,在 chrome 中呈现的文件看起来完全不同。我无法在任何地方上传文件,但是当我有时间时,我会尝试做一些例子。在 IE 10 中,带星号和不带星号的文件看起来与 chrome 中不带星号的文件相同。
【解决方案3】:

假设在班级去之前 id (#id.class):

加上不带astherisc没有任何区别,因为asterisc的意思是CSS会应用到任何有这个class的id上,和不带astherisc的class一样:

// 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{
}

希望对你有帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-23
    • 1970-01-01
    • 2011-10-20
    相关资源
    最近更新 更多