【发布时间】:2015-09-20 04:43:33
【问题描述】:
用一个例子更好地解释:
我有 2 个表,其中一个有一个类:
<table>
<tr>
<td>111</td>
<td>222</td>
<td>333</td>
</tr>
<!-- more rows -->
</table>
<table class="letters">
<tr>
<td>AAA</td>
<td>BBB</td>
<td>CCC</td>
</tr>
<!-- more rows -->
</table>
我对表格行有 3 条规则。我希望“字母”表有红色行,没有类的表有蓝色行。我还希望所有表格中的所有行在鼠标悬停时都以黄色突出显示。因此,这些规则:
table tr {
background-color: #33CCFF;
}
table tr:hover {
background-color: #FAF3B1;
}
table.letters tr {
background-color: #FF8888;
}
但是,悬停规则仅适用于第一个表(没有类的表),而不适用于“字母”表。如果我删除第三条规则,那么,正如预期的那样,两个表都有蓝色行,并且黄色突出显示有效。
当我有 3 条规则时,他们似乎在说:
- 将所有表格行的背景颜色设为蓝色
- 将所有表格行的悬停颜色设为黄色
- 将“字母”类表格中所有表格行的背景颜色设为红色(覆盖此类表格的规则 #1)
那么为什么规则#3 的存在使规则#2 停止工作?我没有说任何关于“字母”表行的悬停伪类,那么为什么不适用所有表的一般规则?
【问题讨论】:
-
如果我理解正确,因为伪类被该类覆盖。这就是我的意思:jsfiddle.net/601v0kf1/1
-
如果其中任何一个对您有用,请检查此问题的答案
标签: html css css-selectors pseudo-class