【问题标题】:CSS Universal selector (*) specificityCSS 通用选择器 (*) 特异性
【发布时间】:2019-05-14 21:47:21
【问题描述】:

我试图弄清楚为什么 .x*.x 具有更高的特异性,而后者有望获胜。

*.x 不应该具有 0-0-1-1(1 个类,1 个标签)的特性,而 .x 只是一个类 0-0-1-0

考虑以下基本代码:

*.x { color: blue; }

.x { color: red }
<p class="x">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Atque, nam.</p>

它应该是蓝色的。为了演示预期的行为,我将* 替换为另一个元素(p):

p.x { color: blue; }

.x { color: red }
<p class="x">This time it works.</p>

【问题讨论】:

  • 通用选择器的特异性为 0, 0, 0, 0 你看不到 * 作为标签。在你的情况下,两者都是平等的......

标签: css css-specificity


【解决方案1】:

universal selector (*) 对特异性没有影响,因此将应用后一个选择器的样式。

星号 (*) 是 CSS 的通用选择器。它匹配单个 任何类型的元素。用简单的选择器省略星号有 同样的效果。例如,考虑 *.warning 和 .warning 相等。

【讨论】:

  • 我没有关注这个。当我为 * 制定规则时,它似乎优先于我的所有其他标签和类规则。我希望它包含所有元素的默认值,所以我希望它具有低优先级!
【解决方案2】:

这是意料之中的。 W3C 规范说,

" 给定元素的选择器特异性计算如下:

  • 统计选择器中 ID 选择器的数量 (= A)
  • 计算类选择器、属性选择器和 选择器中的伪类 (= B)
  • 计算类型选择器和伪元素的数量 选择器 (= C)
  • 忽略通用选择器

"

注意最后一个项目符号。

参考:https://www.w3.org/TR/selectors/#specificity

【讨论】:

    猜你喜欢
    • 2013-09-26
    • 2015-02-09
    • 2010-12-28
    • 2012-05-25
    • 2013-01-14
    • 2019-08-19
    • 1970-01-01
    • 2011-05-03
    相关资源
    最近更新 更多