我经常对 CSS 覆盖规则感到困惑:一般来说,我意识到更具体的样式表会覆盖不太具体的样式表,而具体性取决于指定了多少选择器。还有!important
关键字,它也起作用。
所以,这是一个简单的例子:我有一个包含两个表格单元格的表格。表格本身有一个 CSS 规则,适用于表格中的所有单元格。但是,第二个表格单元格有它自己的规则,应该覆盖通用表格规则:
<html>
<head>
<style type = "text/css">
table.rule1 tr td {
background-color: #ff0000;
}
td.rule2 {
background-color: #ffff00;
}
</style>
</head>
<body>
<table class = "rule1">
<tr>
<td>abc</td>
</tr>
<tr>
<td class = "rule2">abc</td>
</tr>
</table>
</body>
</html>
但是......当我在浏览器中打开它时,我看到它rule2
并没有覆盖rule1
. 好的 - 所以我想我需要rule2
更“具体”,但我不能真正定义任何进一步的选择器,因为我只想将它应用于特定的表格单元格。所以,我尝试输入! important
关键字,但这也不起作用。
rule2
如果我将文本节点包装在 a 中,我可以覆盖<div>
,例如:
<td class = "rule2"><div>abc</div></td>
...然后使 CSS 规则更具体:
td.rule2 div {
background-color: #ffff00; !important
}
这行得通,但这不是我想要的。一方面,我想将规则应用于表格单元格,而不是 DIV。它有所不同,因为您仍然可以将背景颜色rule1
视为 div 周围的边框。
那么,我需要做什么来告诉 CSS 我想要rule2
覆盖rule1
该td
元素?