一尘不染

一个CSS规则如何覆盖另一个CSS规则?

css

所以,这就是我正在做的:

#id-form td {
padding: 0 0 10px 0;
}

#particular-td {
border: 1px solid black;
text-align: center;
background-color: #DFDFDF;
height: 30px;
padding: 10px;
}

我有一张桌子#id-form,上面放着所有td的桌子padding-bottom: 10px
但是在一个特殊的场合,我希望一个特定的对象在各个方向td都有padding: 10px,我将其设置为#particular-td

显然,我将CSS样式依次放在一个外部文件中。
但是渲染的CSS仅具有padding-bottom,并且padding: 10px似乎已被覆盖!

请说明:
这是怎么发生的以及为什么发生?
我应该如何安排这些规则来解决我的问题(除了内联样式)?

编辑:我在表中删除'table'之前#id-form。我从来没有使用过它,我只是在这里提到它以便能够更好地解释它。


阅读 578

收藏
2020-05-16

共1个答案

一尘不染

由于CSS的特殊性。选择器的权重将根据组成它的组件进行评估,其中id的权重为100,classes的权重为10,element选择器的权重为1。

因此,在您的示例中:

table#id-form td

的权重为102(table#id为101且td为1),而这是:

#particular-td

权重为100。如果将第二个权重改为:

#id-form #particular-td

您将获得200的权重,它将覆盖先前的选择器。仅在万不得已的情况下,才可以使用!important,因为这很可能会阻止您覆盖它。

2020-05-16