Меня часто путают правила переопределения 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
, если обернуть текст node в <div>
, например:
<td class = "rule2"><div>abc</div></td>
... и затем сделать правило CSS более конкретным:
td.rule2 div {
background-color: #ffff00; !important
}
Это работает, но это не совсем то, что я хочу. Во-первых, я хочу применить правило к ячейке таблицы, а не к DIV. Это имеет значение, потому что вы все еще можете видеть цвет фона rule1
как границу вокруг div.
Итак, что мне нужно сделать, чтобы сообщить CSS, я хочу rule2
переопределить rule1
для элемента td
?