为什么我不能覆盖现有的伪元素?

Dan*_*Man 8 css css-specificity pseudo-element

我有两个CSS规则互相跟随:

.some td:first-child:before {
    content:url('path/to/image.png')" " ;
}
.some .other:before {
    content:url('path/to/image2.png')" " ;
}
Run Code Online (Sandbox Code Playgroud)

这是HTML片段:

<table class="some">
<tr>
    <td class="other">Text goes here</td>
    <td>Some more text.</td>
</tr>
</table>
Run Code Online (Sandbox Code Playgroud)

它们都应该应用于同一个表格单元格.没有班级的那个人意味着后备.但出于某种原因,它总是在第二条规则上选择第一条规则.我知道第二个可以工作,因为如果我禁用Firebug中的第一个,它将被使用.

我在这里错过了什么?

Dan*_*Man 14

好吧,在一些 阅读之后,直截了当地说,这就是特异性:

  • Id:100
  • 课程:10
  • :10
  • 元素:1
  • 要素:1

这使得第一个选择器具有22的特异性,而21的第二个选择器显然first-child似乎是伪类而不是伪元素.

最后,添加一个td之前.other的技巧,因为那时文档顺序优先.