【发布时间】:2012-04-20 19:20:05
【问题描述】:
我有两个相互遵循的 CSS 规则:
.some td:first-child:before {
content:url('path/to/image.png')" " ;
}
.some .other:before {
content:url('path/to/image2.png')" " ;
}
这是 HTML sn-p:
<table class="some">
<tr>
<td class="other">Text goes here</td>
<td>Some more text.</td>
</tr>
</table>
它们都应该应用于同一个表格单元格。没有类的那个是一个后备。但出于某种原因,它总是选择第一条规则而不是第二条规则。我知道第二个有效,因为如果我在 Firebug 中禁用第一个,它将使用它。
我在这里错过了什么?
【问题讨论】:
-
.some td.other:before不起作用吗? -
第一个比另一个有more specificity。
-
@JohnH:问题在于,“其他”会有所不同,如果没有针对特定类的明确规则,则应该使用后备规则。
-
@JaredFarrish:为什么?第二个有两个类选择器,第一个只有一个。如果匹配,它不应该使用那个代替吗?
-
第一个看起来是 31(三个二级选择器加上一个元素选择器),第二个是 30(三个二级选择器,没有元素选择器)。看看怎么calculate your selector specificity。
标签: css pseudo-element css-specificity