【问题标题】:What's more precedent: a CSS class or a pseudo-class with a * selector?还有什么先例:CSS 类或带有 * 选择器的伪类?
【发布时间】:2013-08-13 13:37:10
【问题描述】:

假设我有这两条 CSS 规则:

*:selected {
    background-color: @some_color;
}

.cell {
    background-color: @base_color;
}

在查找类cell 的:selected 元素的情况下,这两个规则都适用,但是哪一个是先例?元素应该以base_color 结尾还是以some_color 结尾?

(注意:我也添加了 gtk 标签,因为我想知道 GTK+CSS 引擎的行为是否与浏览器的行为方式相同。如果不同,则可能是一个错误。)

【问题讨论】:

  • 我认为在直接 div 标签中使用了任何一个。所以像
    // 选定的单元格
    // .cell
    .cell 将被使用
  • 关于 GTK CSS 引擎的评论:它应该的行为方式与浏览器 CSS 的行为方式相同;任何差异都应作为错误报告给 bugzilla.gnome.org。

标签: css gtk


【解决方案1】:

这两个规则的特异性都是[ 0 0 1 0 ],所以顺序是由源顺序决定的。

在这种情况下,.cell 稍后在样式表中指定,因此将使用 @base_color

顺便说一下,* 选择器的特异性为零。

【讨论】:

    【解决方案2】:

    根据selector specificity 的文档,特异性级别是相同的。因此,获胜规则属于级联,.cell 将优先。出于某种原因,文档没有明确说明,但 * 并没有添加具体性(即,它显然不算作元素名称)。

    * {} /* a=0 b=0 c=0 d=0 -> 特异性 = 0,0,0,0 */

    【讨论】:

      猜你喜欢
      • 2012-07-27
      • 2012-04-05
      • 1970-01-01
      • 1970-01-01
      • 2019-05-15
      • 1970-01-01
      • 2013-07-05
      相关资源
      最近更新 更多