【发布时间】:2012-07-01 02:03:17
【问题描述】:
我经常对 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 关键字,但这也不起作用。
如果我将文本节点包装在 <div> 中,我可以覆盖 rule2,例如:
<td class = "rule2"><div>abc</div></td>
...然后让 CSS 规则更具体:
td.rule2 div {
background-color: #ffff00; !important
}
这行得通,但这不是我想要的。一方面,我想将规则应用于 表格单元格,而不是 DIV。这会有所不同,因为您仍然可以看到 rule1 的背景颜色作为 div 周围的边框。
那么,我需要做什么来告诉 CSS 我希望 rule2 覆盖 rule1 的 td 元素?
【问题讨论】: